在 Django 中,CSRF 令牌的天生和检查过程是通过 Django 的 CSRF 中心件 (CsrfViewMiddleware) 和模板标签 ({% csrf_token %}) 主动处理的。以下是详细的天生和检查过程:
CSRF 令牌的天生过程
- 用户访问页面:
- 当用户第一次访问页面时,Django 会为用户创建一个会话。如果用户还没有会话,Django 会创建一个新的会话 ID。
- 天生 CSRF 令牌:
- Django 天生一个随机的 CSRF 令牌,并将其与用户的会话相干联。这个令牌是一个随机的字符串,具有足够的长度和复杂性,以防止猜测攻击。
- 令牌通常存储在用户的会话中,可以通过 request.session 访问。
- 嵌入 CSRF 令牌:
- 在每个必要保护的表单中,Django 通过模板标签 {% csrf_token %} 主动嵌入 CSRF 令牌。这个标签会天生一个隐藏的输入字段,包罗当前会话的 CSRF 令牌。
- 示例:
- <form method="post" action="/submit/">
- {% csrf_token %}
- <!-- 其他表单字段 -->
- <input type="submit" value="Submit">
- </form>
复制代码
CSRF 令牌的检查过程
- 用户提交表单:
- 当用户提交表单时,CSRF 令牌会作为隐藏字段包罗在哀求中。
- 对于 AJAX 哀求,令牌通常包罗在哀求头中。
- CSRF 中心件检查哀求:
- CsrfViewMiddleware 会拦截所有进入的 POST、PUT、PATCH 和 DELETE 哀求,并检查 CSRF 令牌。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |