在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入门之语句(if语句、while语句、for语句)
Jan 19 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
Python数学形态学实例分析
Sep 06 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
Python 操作 MySQL数据库
Sep 18 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
论建造顺序的重要性
2020/03/04 星际争霸
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python列表切片用法示例
2017/04/19 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python高阶爬虫实战分析
2018/07/29 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
房产销售经理职责
2013/12/20 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
2015年新学期寄语
2015/02/26 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
党校培训学习心得体会
2016/01/06 职场文书
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记