首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-rest-framework和django-rest-framework-jwt APIViews和验证授权头

Django-rest-framework和django-rest-framework-jwt APIViews和验证授权头
EN

Stack Overflow用户
提问于 2018-12-12 03:53:15
回答 1查看 95关注 0票数 0

我正在使用DRF和DRF-jwt来保护我的API。目前我有一些CBV是这样写的

代码语言:javascript
复制
class Organization(APIView):
    permission_classes = (IsAuthenticated,)
    @method_decorator(csrf_exempt, name='dispatch')
    class OfficeVisitsOverview(APIView):
        def post(self, request, *args, **kwargs):
            cursor = connection.cursor()
            (before, today) = getDateRange()
            cursor.execute("SELECT format(COUNT(*), 'N0') \
                            FROM Medi_OfficeVisit \
                            WHERE ( cast(VisitDate as date) BETWEEN '{0}' AND '{1}' ) \
                    ".format(before, today))
            data = dictfetchall(cursor)
            connection.close()
            return JsonResponse({"numberOfOVs": data[0][""]})

根据我对APIView和权限类的理解,IsAuthenticated确保与请求头一起发送的是授权令牌。您如何确定没有人修改过JWT?我如何知道我的Django应用程序中的Secret_Token每次都被用来解码/编码/验证/验证每个请求所接收/发送的JWT?这样的安全性足够让我的API向公众开放吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-12 04:55:32

身份验证只会确保当前的request.user.is_authenticated为真。身份验证后端负责检查报头、验证令牌等,并设置User.is_authenticated。这是您在设置rest-framework-jwt时在设置文件中添加的。这是一个专门为安全身份验证而创建的应用程序,所以,是的,这就足够了。但您仍然需要注意其他方面,如SSL、sql注入等(搜索Django安全性)。警告!不要使用.format创建SQL查询,因为这是SQL注入的直接方式。如果您稍后使用用户提供的一些参数进行查询,您将处于危险之中。将参数作为第二个参数传递给cursor.execute或使用ORM来避免这种情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53731404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档