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的Django框架中Manager方法的使用
Jul 21 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
在Python中居然可以定义两个同名通参数的函数
Jan 31 Python
Python 互换字典的键值对实例
Feb 12 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
基于Python函数和变量名解析
Jul 19 Python
python 生成器和迭代器的原理解析
Oct 12 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
python中的yield from语法快速学习
Nov 06 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
获得Google PR值的PHP代码
2007/01/28 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
jquery json 实例代码
2010/12/02 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python中的包和模块实例
2014/11/22 Python
详解Python进程间通信之命名管道
2017/08/28 Python
Python星号*与**用法分析
2018/02/02 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
农村党支部先进事迹
2014/01/14 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
党员自我剖析材料
2014/08/31 职场文书
药店采购员岗位职责
2014/09/30 职场文书
七年级生物教学反思
2016/02/20 职场文书
2019求职信大礼包
2019/05/15 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL