在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删除空文件和空文件夹的方法
Jul 14 Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
Python 处理数据的实例详解
Aug 10 Python
Python反射的用法实例分析
Feb 11 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
Python求离散序列导数的示例
Jul 10 Python
使用TensorFlow实现简单线性回归模型
Jul 19 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 Python
浅谈Python中的继承
Jun 19 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
python中altair可视化库实例用法
Jan 26 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
德劲1107的电路分析与打磨
2021/03/02 无线电
第九节 绑定 [9]
2006/10/09 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
详解js闭包
2014/09/02 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
少年闰土教学反思
2014/02/22 职场文书
教师工作能力自我评价
2015/03/04 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书