在Django中预防CSRF攻击的操作


Posted in Python onMarch 13, 2020

CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。

CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。

( 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…)

造成的问题:个人隐私泄露以及财产安全。

CSRF攻击示意图

客户端访问服务器时没有同服务器做安全验证

在Django中预防CSRF攻击的操作

防止 CSRF 攻击

步骤:

1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值

2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token

3. 在用户点击提交的时候,会带上这两个值向后台发起请求

4. 后端接受到请求,会做以下几件事件:

4.1 从 cookie中取出 csrf_token

4.2 从 表单数据中取出来隐藏的 csrf_token 的值

4.3 进行对比

5. 如果比较两个值(经过算法运算得出的结果)是一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

在Django中预防CSRF攻击的操作

CSRF_TOKEN的设置过程

创建视图类

在Django中预防CSRF攻击的操作

添加路由

在Django中预防CSRF攻击的操作

添加表单

在form里添加语句

在Django中预防CSRF攻击的操作

<form method="post" action="/tpl/csrf">
  {{ csrf_input }}
<p>
 <label for="fave">Fruit: <input id="fave" name="fave" /></label>
</p>
<p>
 <label for="name">Name: <input id="name" name="name" /></label>
</p>
<button>提交</button>
</form>

在Django中预防CSRF攻击的操作

补充知识:Django实现url跳转(重定向)

编辑urls.py文件如下:

from django.urls import path, include
from django.views.generic import RedirectView
 
urlpatterns = [
  path('polls/', include('polls.urls')),
  path('', RedirectView.as_view(url='polls/')),
 
]

即表示将xxx.com跳转到xxx.com/polls/。

以上这篇在Django中预防CSRF攻击的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python利用elaphe制作二维条形码实现代码
May 25 Python
Python set集合类型操作总结
Nov 07 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 Python
Python无头爬虫下载文件的实现
Apr 02 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
Python学习开发之图形用户界面详解
Aug 23 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 #Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 #Python
django 取消csrf限制的实例
Mar 13 #Python
django-csrf使用和禁用方式
Mar 13 #Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 #Python
python爬虫实现获取下一页代码
Mar 13 #Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 #Python
You might like
php实现文件下载更能介绍
2012/11/23 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
JavaScript 密码强度判断代码
2009/09/05 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
python使用super()出现错误解决办法
2017/08/14 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python程序需要编译吗
2020/06/19 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
初三政治教学反思
2014/01/30 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python