Django rest framework和Django rest framework jwt API视图和验证授权头
我正在使用DRF和drfjwt来保护我的api。目前我有一些CBV是这样写的Django rest framework和Django rest framework jwt API视图和验证授权头,django,django-rest-framework,jwt,Django,Django Rest Framework,Jwt,我正在使用DRF和drfjwt来保护我的api。目前我有一些CBV是这样写的 class Organization(APIView): permission_classes = (IsAuthenticated,) @method_decorator(csrf_exempt, name='dispatch') class OfficeVisitsOverview(APIView): def post(self, request, *args, **kwar
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_令牌每次都被用于解码/编码/验证/验证随每个请求一起接收/发送的JWT?这是否足以让我的API向公众开放?经过身份验证只是确保当前request.user.Is\u authenticated为True。身份验证后端负责检查标头、验证令牌等,并设置User.is\u身份验证。这是您在设置rest framework jwt时在设置文件中添加的。这是一个完全为了安全身份验证而创建的应用程序,所以是的,这就足够了。但是您仍然需要注意其他方面,如SSL、sql注入等(搜索Django安全性)。
警告不要使用.format创建SQL查询,因为这是SQL注入的直接方法。如果以后使用一些用户提供的参数进行查询,您将处于危险之中。将参数作为第二个参数传递给cursor.execute或使用ORM来避免这种情况 经过身份验证只是确保当前request.user.Is\u authenticated为True。身份验证后端负责检查标头、验证令牌等,并设置User.is\u身份验证。这是您在设置rest framework jwt时在设置文件中添加的。这是一个完全为了安全身份验证而创建的应用程序,所以是的,这就足够了。但是您仍然需要注意其他方面,如SSL、sql注入等(搜索Django安全性)。 警告不要使用.format创建SQL查询,因为这是SQL注入的直接方法。如果以后使用一些用户提供的参数进行查询,您将处于危险之中。将参数作为第二个参数传递给cursor.execute或使用ORM来避免这种情况