在 Django 中,CSRF 指的是跨站请求伪造(Cross-Site Request Forgery)。这是一种网络入侵方法,入侵者诱使已认证的用户在他们不知情的情况下发送伪造的请求,比如在用户登录某个受信任网站后,在另一个标签页中访问恶意网站,恶意网站上的脚本可以发送请求到受信任网站,而这个请求会携带用户的验证信息(比如Cookies),从而执行未经用户授权的操作。
为了防范 CSRF 入侵,Django 提供了一个内置的防护机制。这个机制主要包括:
- CSRF Token:Django 会为每个用户的会话生成一个唯一的 CSRF token。这个 token 是一个随机生成的字符串,用于验证发起请求的客户端是合法的。
- Token 验证:在进行敏感操作(如表单提交)时,Django 要求前端页面包含这个 CSRF token。当请求到达服务器时,Django 会验证请求中的 token 是否与用户会话中的 token 一致。如果不一致或缺失,Django 会拒绝这个请求。
- 在模板中使用 CSRF Token:在 Django 模板中,你需要在每个
<form>
标签内添加{% csrf_token %}
,这会自动插入隐藏的输入字段,包含当前会话的 CSRF token。
<form method="post">
{% csrf_token %}
<!-- 表单字段 -->
</form>
- 中间件:Django 的 CSRF 保护是通过中间件实现的。
CsrfViewMiddleware
是默认启用的,负责检查 POST 请求中的 CSRF token。
通过这些措施,Django 能够有效防止 CSRF 入侵,确保应用的安全性。需要注意的是,为了全面保护你的应用,你应该总是启用并正确使用 Django 提供的 CSRF 防护机制。
标签:请求,用户,用法,token,Token,CSRF,Django,csrf From: https://blog.51cto.com/u_13188203/8707037