-
{% csrf_token %} 原理和作用 (踩坑必看)
简介
在django中我们需要在templates的form中加入{%csrf_token%}这串内容,它的作用是当我们get表单页面时,服务器返回页面的同时也会向前端返回一串随机字符,post提交时服务器会验证这串字符来确保用户是在服务端返回的表单页面中提交的数据,防止有人通过例如jquery脚本向某个url不断提交数据,是一种数据提交的验证机制。
用途
跨站点请求伪造(CSRF)保护
CSRF攻击允许恶意用户使用另一个用户的凭据执行操作,而不需要该用户的知情或同意。
Django内置了对大多数csrf攻击的保护,只要您有启用并使用在适当的情况下。然而,与任何缓解技术一样,也有局限性。例如,可以在全局或特定视图中禁用CSRF模块。只有当你知道自己在做什么时,你才应该这样做。
就是说为了防止你做的网站挂网后被不怀好意的人利用攻击手段篡改了你的请求操作,让服务器执行一些攻击者想要执行的操作以达到某种目的而设立的安全机制。
使用
注意:必须在form表单内部
使用后无效果的解决方法
一般情况我们使用pycharm创建一个DJango项目时,在项目根目录下的同名文件夹的setting.py文件里我们通常都能看到有一条设置
默认创建完django项目这条设置会默认启用,为什么会启用?(想快点解决问题的可以直接跳过该部分)
那么检查完上述settings.py文件里的设置未被注释,表单也设置了{% csrf_token %} 测试表单时还是报403错误
可以看看以下笔者自己学习过程中解决的方法:
- 检查{% csrf_token %}放入位置是否正确
- 位置没有错误就麻烦的方法,检查自己的代码有没有错误。
-
确定自己已经检查完了,还是报错,那么如果并不是很重要,仅仅是学习用途,不存在商业用途的可以把setting.py里的csfr设置注释掉:
- (这个解决方法是笔者使用到request.session,cookie时无奈之举)换浏览器打开测试页面。
这是笔者目前为止能解决的方法,因为百度到的有部分试过没效果就没写出来,如果还是没有解决你的问题,笔者表示遗憾,笔者新人,不喜勿喷。大家都是喜欢才聚集在此。
__EOF__
本文作者:时光如水の总是无言 本文链接:https://www.cnblogs.com/wuhongbin/p/13907450.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数