我目前正在考虑我的一个Web应用程序,我希望提供一些有关提高安全性的建议.
我会注意到该应用程序在ASP.net中,当前的实现阻止我使用集成身份验证.这也绝不是一个需要高安全性的应用程序,我只是喜欢我的基础.
在过去,我已经存储了id和令牌.令牌是用户ID的哈希值+用户的Salt(重用auth信息中的值)当用户访问站点时,将根据令牌检查ID并相应地进行刷新.
我觉得这里有个大洞.从理论上讲,如果有人掌握了盐值,他们需要做的就是猜测哈希算法并迭代可能的ID,直到他们进入.我不认为这会发生,但它似乎仍然是一个错误.
有关如何正确确认用户cookie未被更改的任何建议?
我正在尝试使用Django作为后端和React作为前端来设置项目.该项目有几个屏幕,DB中的大量信息和后端生成的图像,并将包括一些身份验证和不同屏幕的用户权限.
根据我发现 - 最好的方法是让Django渲染一个html文件:
def index(request):
return render(request, 'frontend/index.html')
Run Code Online (Sandbox Code Playgroud)
它引用了一个.js文件:
<script src="{% static "frontend/main.js" %}"></script>
Run Code Online (Sandbox Code Playgroud)
这是使用Webpack创建的.
这个main.js使用REST api从Django中检索所需的数据:
fetch("...some Django endpoint..").then(response => ... this.setState(...retrieved data...))
Run Code Online (Sandbox Code Playgroud)
与仅使用Django for backend + Django模板的前端不同,后端可以直接将上下文发送到模板:
def index(request):
context = {'information': .... retrieve info from DB}
return HttpResponse(loader.get_template('bla/index.html').render(context, request))
Run Code Online (Sandbox Code Playgroud)
模板可以直接使用此信息,而无需再次引用后端:
{% for bla in information %}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否合理?
让前端使用REST来检索它需要的每条信息并且后端为它需要提供的每个数据部分暴露另一个REST api似乎过分(而不是仅仅将所有信息推送到单个dict并将其发送到以及模板),
此外,它需要至少2个RTT来呈现整页(我猜通常是可以的)
我正在使用Django Rest Framework开发API后端.我最初使用会话身份验证开发它,不知道它不能用于发送到移动应用程序.在Postman中尝试用户登录时,我遇到了CSRF保护方面的问题.
现在,由于我必须转移到基于令牌的身份验证才能使其正常工作,我该如何进行呢?我想如何快速实现它.我浏览了stackoverflow上的教程和答案,但实际上无法实现这一点
令牌认证是最合适的认证方法吗?我应该使用默认提供的DRF模块还是JWT或其他一些实现?我可以仅使用令牌身份验证进行用户登录,还可以使用其他3个API的会话身份验证?
class UserLogin(APIView):
queryset = User.objects.all()
serializer_class = UserSerializer
def post(self, request, format='json'):
username = request.POST.get('username')
email = request.POST.get('email')
password = request.POST.get('password')
user = EmailBackend.authenticate(self,username = email, password = password)
if user:
id = user.id
return Response(id, status=status.HTTP_201_CREATED)
else:
return Response("Failure", status=HTTP_400_BAD_REQUEST)
class UserRegistration(APIView):
queryset = User.objects.all()
serializer_class = UserSerializer
def post(self, request, format='json'):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
user = serializer.save()
if user:
return Response('Success', status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
class RecommendationQuestions(generics.ListCreateAPIView):
def post(self, request, …Run Code Online (Sandbox Code Playgroud)