Django之跨站请求伪造
Django 中内置了一种专门处理 CSRF 问题的中间件 django.middleware.csrf.CsrfViewMiddleware;
这个中间件的工作流程:
1、在 render 返回页面的时候,在页面中塞了一个隐藏的 input 标签
用法:
我们在页面上 form 表单 里面 写上 {% csrf_token %}
2、当你提交 POST 数据的时候,它帮你做校验,如果校验不通过就拒绝这次请求
例如:transfer.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Title</title>
{#
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" />
#}
</head>
<body>
<h1>正常网站</h1>
<form action="/transfer/" method="post">
{% csrf_token %}
<p>
转出:
<input type="text" name="from" />
</p>
<p>
转入:
<input type="text" name="to" />
</p>
<p>
金额:
<input type="text" name="money" />
</p>
<p>
<input type="submit" value="提交" />
</p>
</form>
{#
<script src="jquery-3.2.1.min.js"></script>
#} {#
<script src="bootstrap/js/bootstrap.min.js"></script>
#}
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
views.py
from django.shortcuts import render, HttpResponse # Create your views here. def
transfer(request): if request.method == "POST": from_ = request.POST.get("from")
to_ = request.POST.get("to") money = request.POST.get("money") print("{} 转给 {}
{}元".format(from_, to_, money)) return HttpResponse("转账成功") return
render(request, "transfer.html")
1
2
3
4
5
2
3
4
5
作者:
本文链接:https://jokerbai.com
版权声明:本博客所有文章除特别声明外,均采用 署名-非商业性-相同方式共享 4.0 国际 (CC-BY-NC-SA-4.0) 许可协议。转载请注明出处!
上次更新: 2025/07/19, 11:33:23
- 02
- 使用Zadig从0到1实现持续交付平台07-19
- 03
- 基于Jira的运维发布平台07-19