在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之让人欢喜让人忧的迭代
Oct 02 Python
python开发之list操作实例分析
Feb 22 Python
Python实现全角半角字符互转的方法
Nov 28 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
老生常谈Python进阶之装饰器
May 11 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
python把转列表为集合的方法
Jun 28 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 30 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
js中的数组对象排序分析
2018/12/11 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
利用Python计算KS的实例详解
2020/03/03 Python
Python实现GIF图倒放
2020/07/16 Python
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
自动化职业生涯规划书范文
2014/01/03 职场文书
2014年保卫工作总结
2014/12/05 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
追悼词范文大全
2015/06/23 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python