文章目录
- 切入点
- 案例测试
- views.py测试代码
- templates模板下的html文件
- 配置路由
- 运行服务 出现CSRF报错
- 解决CRSF报错
- 再次运行服务 查看结果
切入点
某些恶意网站上包含链接、表单按钮或者]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攻击的原理了吧