在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的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
python 正确保留多位小数的实例
Jul 16 Python
Python中类的创建和实例化操作示例
Feb 27 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
七个非常实用的Python工具包总结
Jun 15 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
第三节 定义一个类 [3]
2006/10/09 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
pyside写ui界面入门示例
2014/01/22 Python
Python使用MD5加密字符串示例
2014/08/22 Python
Python多线程编程(一):threading模块综述
2015/04/05 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
四种会话跟踪技术
2015/05/20 面试题
行政部工作岗位职责范本
2014/03/05 职场文书
安全标语大全
2014/06/10 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
个人委托书
2014/07/31 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
门面租赁合同范文
2019/08/06 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
python tqdm用法及实例详解
2021/06/16 Python
springboot实现string转json json里面带数组
2022/06/16 Java/Android