在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 常用string函数详解
May 30 Python
详细介绍Python的鸭子类型
Sep 12 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
Python并行分布式框架Celery详解
Oct 15 Python
python实现dijkstra最短路由算法
Jan 17 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
python实现银行管理系统
Oct 25 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
Python 解析xml文件的示例
Sep 29 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 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使用redis位图bitMap 实现签到功能
2019/10/08 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
jQuery对表单的操作代码集合
2011/04/06 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
python实现在pickling的时候压缩的方法
2014/09/25 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
Python map及filter函数使用方法解析
2020/08/06 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
舞蹈教育学专业推荐信
2013/11/27 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
烹饪自我鉴定
2014/03/01 职场文书
班长演讲稿范文
2014/04/24 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
计算机网络专业求职信
2014/06/05 职场文书
党员一帮一活动总结
2014/07/08 职场文书
保证书格式
2015/01/16 职场文书
2015年植树节活动总结
2015/02/06 职场文书
搞笑老公保证书
2015/02/26 职场文书
李强优秀员工观后感
2015/06/16 职场文书