在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 lambda和Python def区别分析
Nov 30 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
Python中一行和多行import模块问题
Apr 01 Python
python unittest实现api自动化测试
Apr 04 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
使用pandas的box_plot去除异常值
Dec 10 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 Python
python实现简易自习室座位预约系统
Jun 30 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
一个ftp类(ini.php)
2006/10/09 PHP
php 定界符格式引起的错误
2011/05/24 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
解决Python一行输出不显示的问题
2018/12/03 Python
详解Python 解压缩文件
2019/04/09 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python 5个实用的技巧
2020/09/27 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
2014年教师培训的自我评价
2014/01/03 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
职工运动会邀请函
2014/01/19 职场文书
师恩难忘教学反思
2014/04/27 职场文书
学校2014年度工作总结
2014/12/06 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
小学生节约用水倡议书
2019/08/12 职场文书