在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多进程同步Lock、Semaphore、Event实例
Nov 21 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
Python 中字符串拼接的多种方法
Jul 30 Python
python实现Zabbix-API监控
Sep 17 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
Python实现信息管理系统
Jun 05 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
python绘制规则网络图形实例
2019/12/09 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
体育教师求职信
2014/06/30 职场文书
老干部工作先进事迹
2014/08/17 职场文书
办公用房租赁协议书
2014/11/29 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python