切入点
某些恶意网站上包含链接、表单按钮或者]avaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作
- Gjango如何做?
存储暗号:html页面一个 ||| COOKIE 一个
Django在一定的运算下比对两个暗号 是一致的 就不会发生403错
我们通过一个案例来理解
案例测试
确保CSRF中间件功能已经启动
views.py测试代码
def test_csrf(request):
if request.method == 'GET':
return render(request, 'test_csrf.html')
elif request.method == 'POST':
return HttpResponse('---test post is ok---')
templates模板下的html文件
- 注意此时
html没有暗号
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test_csrf</title>
</head>
<body>
<form action="/test_csrf" method="post">
<input type="text" name="username">
<input type="submit" value="提交">
</form>
</body>
</html>
配置路由
path(‘test_csrf’,views.test_csrf),
运行服务 出现CSRF报错
python manage.py runserver
- 网页查看
网页报错403,CSRF验证失败,同时给出了我们具体的解决方案
解决CRSF报错
- html添加暗号
<form action="/test_csrf" method="post">
{% csrf_token %}
<input type="text" name="username">
<input type="submit" value="提交">
</form>
{% csrf_token %}
是CRSF能否验证通过 的关键
再次运行服务 查看结果
- 检查查看cookie
- 查看html界面源码
出现暗号
但是隐藏了
到这里,你应该进一步理解了CSRF攻击的原理了吧
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Django | 从中间件的角度理解跨站请求伪造(Cross-Site Request Forgey)[CSRF攻击]
发表评论 取消回复