python Django里CSRF 对应策略详解


Posted in Python onAugust 05, 2019

CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的×××方式。

我的理解是,比如你访问过招商银行的网站并登陆之后,你的cookie信息暂时不会失效,

这时,hacker通过各种方式诱导你访问他给你提供的网站等链接,让你在同一浏览器访问

hacker给你的网站时,那么他给你提供的网站里面有直接有向招商银行提交转账信息的请求,这时,

这个转账请求会借用你刚刚登陆过招商银行的cookie信息,来使用的你的身份进行合法的转账。

那么为了减少这个情况的发生,在客户端与服务端交互的时候,当客户端浏览器第一次访问cookie的时候,服务端会有基于csrf的随机验证字符串生成,然后把这些字符串写到客户端cookie里,同时服务端在session里保存一份,当客户端浏览器再次发来post请求的时候,服务端会验证cookie里csrf_token(就是生成的这个随机字符串)。

Django里自动帮我们封装了这个功能,在Django项目里的setting.py文件里会默认开启 'django.middleware.csrf.CsrfViewMiddleware',这一项功能。

所以我们html文件里有post请求的时候要在from表单里添加{% csrf_token %}这一项

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div>
    <form action="/app01/login/" method="post">
 {% csrf_token %}
      <input type="text" name="username">
      <input type="password" name="pwd">
      <input type="submit" value="提交">
    </form>
  </div>
</body>
</html>

但是有的时候是不需要 csrf_token 认证的,有的时候是需要的,但是Django项目里的setting.py文件里设置了 'django.middleware.csrf.CsrfViewMiddleware'之后就是全局生效了;这就 不是我们所需要的了。

那么如果有的函数不需要csrf_token 认证的话,那么就需要用到@csrf_exempt装饰器来设置单个函数不用csrf_token 认证

from django.views.decorators.csrf import csrf_exempt,csrf_protect

@csrf_exempt是不需要设置csrf_token认证的

@csrf_protect是 需要设置csrf_token 认证的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 Python
Python实现的彩票机选器实例
Jun 17 Python
Python 稀疏矩阵-sparse 存储和转换
May 27 Python
python实现Windows电脑定时关机
Jun 20 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Python3 批量扫描端口的例子
Jul 25 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
python验证码图片处理(二值化)
Nov 01 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
python boto和boto3操作bucket的示例
Oct 30 Python
Python入门之使用pandas分析excel数据
May 12 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 #Python
详解Python打包分发工具setuptools
Aug 05 #Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 #Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 #Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 #Python
Django应用程序入口WSGIHandler源码解析
Aug 05 #Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 #Python
You might like
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
Python正则表达式介绍
2012/08/06 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
2014年国培研修感言
2014/03/09 职场文书
餐饮投资计划书
2014/04/25 职场文书
课外活动总结范文
2014/07/09 职场文书
求职自我评价范文100字
2014/09/23 职场文书
商务代表岗位职责
2015/02/15 职场文书
会议通知格式范文
2015/04/15 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
导游词之江南周庄
2019/12/06 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python