在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使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
Python获取对象属性的几种方式小结
Mar 12 Python
Python爬虫requests库多种用法实例
May 28 Python
Python urllib3软件包的使用说明
Nov 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
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python控制台英汉汉英电子词典
2020/04/23 Python
Python实现字典的key和values的交换
2015/08/04 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python实现内存监控系统
2021/03/07 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
python实现门限回归方式
2020/02/29 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL