在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之玩转字符串(1)
Sep 14 Python
Python 序列的方法总结
Oct 18 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
python实现三次样条插值
Dec 17 Python
python实现大转盘抽奖效果
Jan 22 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
python requests使用socks5的例子
Jul 25 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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开发GUI
2006/10/09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
jQuery之过滤元素操作小结
2013/11/30 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
Python中os.path用法分析
2015/01/15 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
Python之父谈Python的未来形式
2016/07/01 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Python如何访问字符串中的值
2020/02/09 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
详解python对象之间的交互
2020/09/29 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
《苏珊的帽子》教学反思
2014/04/07 职场文书
演讲比赛策划方案
2014/06/11 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
创业计划书之熟食店
2019/10/16 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang