我在开发一个类似匿名公告板的应用程序。
该应用程序配置为react和django rest框架。
为了通过uuid的cookie来识别用户,我使用了如下自定义中间件:
import uuid
from django.contrib.sessions.middleware import SessionMiddleware
from django.http.request import HttpRequest
from django.http.response import HttpResponse
class CustomMiddleware(SessionMiddleware):
def process_response(self, request: HttpRequest, response: HttpResponse) -> HttpResponse:
user_id = request.COOKIES.get('user_id', None)
if not user_id:
max_age = 365 * 24 * 60 * 60
response.set_cookie(
'user_id',
str(uuid.uuid4()),
max_age=max_age,
samesite='lax'
)
return super().process_response(request, response)
然后我在谷歌上搜索如何保护应用程序免受CSRF的攻击,但找不到它。
请教我最好的方法。
你好。
我试着使用会话和csrf令牌,但我没有任何想法。
我不知道如何在服务器上存储csrf令牌并验证它是否匹配。
1条答案
按热度按时间icnyk63a1#
为了保护你的应用免受CSRF攻击,你可以使用Django内置的CSRF保护中间件。该中间件检查每个POST请求中的特殊令牌。该令牌需要与任何POST请求一起发送,以便请求被接受。
确保在settings.py MIDDLEWARE部分中有
CsrfViewMiddleware
'django.middleware.csrf.CsrfViewMiddleware',
如果你想从CSRF保护中免除任何视图,你可以使用
@csrf_exemp
装饰器:我希望这对你有帮助。