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使用win32com在百度空间插入html元素示例
Feb 20 Python
用python + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
PyQt5每天必学之组合框
Apr 20 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
python生成器推导式用法简单示例
Oct 08 Python
python爬虫实例之获取动漫截图
May 31 Python
如何用 Python 制作一个迷宫游戏
Feb 25 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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
B2K与车机的中波PK
2021/03/02 无线电
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
JS backgroundImage控制
2009/05/19 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
Python中文竖排显示的方法
2015/07/28 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
python的dict判断key是否存在的方法
2020/12/09 Python
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
法律进学校实施方案
2014/03/15 职场文书
植树节标语
2014/06/27 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技