首页
学习
活动
专区
圈层
工具
发布

Django进阶之CSRF

简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。...全局: 中间件 django.middleware.csrf.CsrfViewMiddleware 局部: @csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件...注意:from django.views.decorators.csrf import csrf_exempt,csrf_protect 原理 当用post提交数据的时候,django会去检查是否有一个...)打印的内容为:HTTP_X_CSRFTOKEN 这里的HTTP_X_CSRFTOKEN是django在X_CSRF的前面添加了HTTP_,所以实际传递的是就是X_CSRFtoken,而在前端页面的ajax...在ajax提交的时候通过请求头传递的给后台的 2、    csrf在前端的key为:X-CSRFtoken,到后端的时候django会自动添加HTTP_,并且最后为HTTP_X_CSRFtoken 3、

1.3K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django google-authenticator Google令牌

    Google令牌 #0 github https://github.com/Coxhuang/google-authenticator.git #1 使用操作 调用绑定google-authenticator...的接口,生成一个二维码(如何生成先不用管,后面再说) 手机客户端扫描二维码,App生成一个动态的6位验证码 输入验证码,返回True/False #2 原理 Google令牌分成两部分,一部分是服务端(...使用步骤 新增用户(跳过这一步骤) 绑定google-authenticator 调用绑定令牌接口效果图 ?...登陆 输入错误的令牌 ? 输入正确的令牌,会生成token,也就是登陆成功 ?...#4 具体代码讲解(本例子是前后端分离项目,只考虑后端,前端代码忽略,后端代码基于Django RestFramework) #4.1 需求分析 在用户登陆时,除了需要用户提供账号密码,还需要用户提供该用户实时的令牌验证码

    3K30

    011_Web安全攻防实战:CSRF攻击原理、绕过技术与多层防御策略深度指南

    CSRF令牌 令牌传递:将令牌嵌入到HTML页面中或存储在cookie中 请求携带:客户端在提交表单或发送Ajax请求时携带该令牌 令牌验证:服务器验证请求中的令牌是否与用户会话中的令牌匹配 5.1.2...检查是否有任何端点绕过了CSRF保护 审查会话管理代码,确保令牌与会话正确绑定 Python Flask应用代码审查示例: # 不安全的实现示例 - 缺少CSRF保护 from flask import...请求是否正确包含CSRF令牌 验证令牌获取和传输机制是否安全 检查是否有硬编码的令牌或不安全的令牌存储 审查动态内容生成,确保不破坏CSRF保护 前端代码审查示例: // 不安全的实现 - 缺少CSRF...令牌 表单提交中包含隐藏的CSRF令牌字段 Ajax请求在请求头和请求体中都包含令牌 使用拦截器统一处理CSRF令牌 安全的令牌存储 使用sessionStorage存储令牌,避免localStorage...便于JavaScript获取Token进行AJAX请求 与SameSite Cookie结合:配置Cookie的SameSite属性增强安全性 7.2 Django框架的CSRF防御实现 Django作为

    92610

    python-Django里CSRF 对

    CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的×××方式。     ...Django里自动帮我们封装了这个功能,在Django项目里的setting.py文件里会默认开启'django.middleware.csrf.CsrfViewMiddleware',这一项功能。...认证的,有的时候是需要的,但是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 认证的

    54510

    006: Django ajax请求

    本章知识点 Ajax 介绍 Django ajax请求 完成用户名的校验 知识点讲解 Ajax 介绍 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。...AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。...传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。...,页面刷新 1、冗余提交 2、用户体检 Ajax特殊提交 1、局部提交 2、不影响其他体验 Ajax技术基于js,前端 1、数据库已经存在 2、先编写前端的ajax代码 Jq 1...、测试jq是否可用 对象 条件 内容 最简单的ajax $.ajax( { url:"", //请求的地址 type:“get”, //请求的方式 data:"", //请求的数据

    2.1K10

    谈谈Django的CSRF插件的漏洞

    在书写极乐口测试代码过程中,我遇到的最大的困难就是如何通过测试程序绕过Django的防止CSRF攻击的插件,通过近一个多月的努力我终于解决了这个问题,但是同时也揭露了Django框架的防止CSRF攻击的插件的漏洞...这个就是CSRF攻击。 2、Django的CSRF插件是如何解决CSRF攻击的 下面让我们来看一下Django的CSR插件是如何解决CSRF攻击的。...Django利用了一个名为django.middleware.csrf.CsrfViewMiddleware的中间件(可以在Django的settings.py中设置)利用CSRF令牌的方式来控制。...3、Django的CSRF插件的漏洞 3.1通过requests类破解 但是这个CSRF插件是有漏洞的,在页面login.html页面载入后,黑客可以通过某种手段(比如正则表达式)获得这个CSRF令牌...\'/>",text))”是通过re.findall正则方法获得CSRF令牌,存在csrf_token变量中,由于用这个方法获得的值是“["CSRF令牌值"]”格式的,也就是说去前面多了个“["”,后面多了个

    1.5K10
    领券