随笔 - 105  文章 - 0  评论 - 0  阅读 - 40744

Django之CSRF

什么是CSRF?

CSRF(Cross-site request forgery),中文名称是跨站请求伪造。攻击情况如下:

A电脑登陆了B网站,而同时又没有关闭浏览器,则cookie是会存在的。A电脑又登陆了C网站,而此网站可能具有攻击性。此时C返回A一个网页,有form请求,如果是提交带着cookie提交给C,则C则获取A的cookie,而可以访问其他访问。

如何防CSRF攻击

一般情况下,POST表单提交就有CSRF攻击的风险。而要防止CSRF攻击可以这样,在第一次GET请求时,会返回加密的字符串给客户端,此字符串只能服务器才能解密。下一次提交POST表单时,则用户在善带着此字符串提交。

在FORM表单中防止CSRF攻击

如果在form表彰中不带csrf_token标签进行post请求,则会出现以下情况 ![](https://img2018.cnblogs.com/blog/1503064/201912/1503064-20191228152054580-1336952924.png)

解决办法:
在模板的form表单中添加{% csrf_token %}

在Ajax中提交CSRFTOKEN

方式一、在发送数据时添加CSRFTOKEN键值对。 ![](https://img2018.cnblogs.com/blog/1503064/201912/1503064-20191231161914210-538039119.png)

方式二、在发送数据时发送的是COOKIE里的CSRFTOKEN。

方式三、在每个Ajax请求中添加csrftoken键值对到请求头

方式二、在Ajaxsetup中添加请求头,这样就不用每个ajax请求都需要添加头部信息

最好加上判断是否是post请求。

CSRF的禁用与启用

默认情况下,django是全局开启csrf防攻击的功能。

全局禁用方法

![](https://img2018.cnblogs.com/blog/1503064/201912/1503064-20191228152403957-719135964.png)

局部的禁用与启用

导入:from django.views.decorators.csrf import csrf_exempt, csrf_protect

局部禁用:在view函数前加入@csrf_exempt,配合全局启用使用

局部启用:在view函数前加入@csrf_protect,配合全局禁用使用

posted on   Treelight  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示