在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 相关文章推荐
centos6.7安装python2.7.11的具体方法
Jan 16 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
Python实现Dijkstra算法
Oct 17 Python
Python字典遍历操作实例小结
Mar 05 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
Python标准库itertools的使用方法
Jan 17 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 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模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php简单实现快速排序的方法
2015/04/04 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python 正确保留多位小数的实例
2018/07/16 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
Python流程控制 while循环实现解析
2019/09/02 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
python 实现二维列表转置
2019/12/02 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
桥梁工程专业求职信
2014/04/21 职场文书
个人安全承诺书
2014/05/22 职场文书
质量承诺书怎么写
2014/05/24 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
Python基本数据类型之字符串str
2021/07/21 Python