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进阶教程之词典、字典、dict
Aug 29 Python
python使用PIL模块实现给图片打水印的方法
May 22 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
python 二维数组90度旋转的方法
Jan 28 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python3 线性回归验证方法
Jul 09 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
Python wordcloud库安装方法总结
Dec 31 Python
Python实战之疫苗研发情况可视化
May 18 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操作mongoDB实例分析
2014/12/29 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
php显示页码分页类的封装
2017/06/08 PHP
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
python+opencv实现阈值分割
2018/12/26 Python
python3.4爬虫demo
2019/01/22 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
django最快程序开发流程详解
2019/07/19 Python
python sqlite的Row对象操作示例
2019/09/11 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
软件测试企业面试试卷
2016/07/13 面试题
饮料业务员岗位职责
2013/12/15 职场文书
班级心理活动总结
2014/07/04 职场文书
少先队活动总结
2014/08/29 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
离婚案件原告代理词
2015/05/23 职场文书
村主任当选感言
2015/08/01 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
Python实现批量自动整理文件
2022/03/16 Python