在Django中预防CSRF攻击的操作
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。
CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。
( 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…)
造成的问题:个人隐私泄露以及财产安全。
CSRF攻击示意图
客户端访问服务器时没有同服务器做安全验证
防止 CSRF 攻击
步骤:
1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值
2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
3. 在用户点击提交的时候,会带上这两个值向后台发起请求
4. 后端接受到请求,会做以下几件事件:
4.1 从 cookie中取出 csrf_token
4.2 从 表单数据中取出来隐藏的 csrf_token 的值
4.3 进行对比
5. 如果比较两个值(经过算法运算得出的结果)是一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作
CSRF_TOKEN的设置过程
创建视图类
添加路由
添加表单
在form里添加语句
<form method="post" action="/tpl/csrf"> {{ csrf_input }} <p> <label for="fave">Fruit: <input id="fave" name="fave" /></label> </p> <p> <label for="name">Name: <input id="name" name="name" /></label> </p> <button>提交</button> </form>
补充知识:Django实现url跳转(重定向)
编辑urls.py文件如下:
from django.urls import path, include from django.views.generic import RedirectView urlpatterns = [ path('polls/', include('polls.urls')), path('', RedirectView.as_view(url='polls/')), ]
即表示将xxx.com跳转到xxx.com/polls/。
以上这篇在Django中预防CSRF攻击的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
django 取消csrf限制的实例
# 导入包 from django.views.decorators.csrf import csrf_exempt # 使用装饰器即可避免csrf限制 @csrf_exempt def add_bookshelf(request): user_id = request.POST.get('user_id') print(user_id) return HttpResponse('123') 补充知识:Django 前后端分离跨域AJAX获取csrftoken及获取cookie时遇到的问题 获取
-
Django CSRF认证的几种解决方案
什么是CSRF 浏览器在发送请求的时候,会自动带上当前域名对应的cookie内容,发送给服务端,不管这个请求是来源A网站还是其它网站,只要请求的是A网站的链接,就会带上A网站的cookie.浏览器的同源策略并不能阻止CSRF攻击,因为浏览器不会停止js发送请求到服务端,只是在必要的时候拦截了响应的内容.或者说浏览器收到响应之前它不知道该不该拒绝. 攻击过程 用户登陆A网站后,攻击者自己开发一个B网站,这个网站会通过js请求A网站,比如用户点击了某个按钮,就触发了js的执行. 防止攻击 Doubl
-
django-csrf使用和禁用方式
orm表单使用csrf a. 基本应用 form表单中添加 {% csrf_token %} b. 全站禁用 # 'django.middleware.csrf.CsrfViewMiddleware', c. 局部禁用 'django.middleware.csrf.CsrfViewMiddleware', from django.views.decorators.csrf import csrf_exempt @csrf_exempt def csrf1(request): if reques
-
在Django中预防CSRF攻击的操作
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. ( 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账-) 造成的问题:个人隐私泄露以及财产安全. CSRF攻击示意图 客户端访问服务器时没有同服务器做安全验证 防止 CSRF 攻击 步骤: 1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值 2. 在 Form 表单中添加
-
Django中的cookie与session操作实例代码
添加cookie: def login(req): if req.method=="POST": uf = UserInfoForm(req.POST) if uf.is_valid(): username = uf.cleaned_data["username"] password = uf.cleaned_data["password"] print username,password users = UserInfo.objects.fil
-
Python Django框架防御CSRF攻击的方法分析
本文实例讲述了Python Django框架防御CSRF攻击的方法.分享给大家供大家参考,具体如下: 项目名/settings.py(项目配置,csrf中间件配置): MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware
-
详解Django中CSRF和CORS的区别
目录 一.CSRF:保护机制 二.CORS:跨域访问 一.CSRF:保护机制 Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csrftoken的值相同,这样做的原理如下: 1.在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值 2.当用户提交django的表单时,服务器校验这个表单的csrftoken是否和自己保存的一致,
-
CSRF攻击是什么?如何防范CSRF攻击?
目录 一.什么是CSRF攻击 二.CSRF攻击的流程 三.常见的CSRF攻击 1.GET类型的CSRF 2.POST类型的CSRF 四.CSRF测试 五.预防CSRF攻击 5.1.验证HTTPReferer字段 5.2.添加token验证 5.3.在HTTP头中自定义属性并验证 总结 一.什么是CSRF攻击 CSRF攻击的全称为跨站脚本伪造,也称为One Click Attack或者Session Eiding,通常缩写为CSRF或者XSRF.CSRF通过伪装来自受信任的用户的请求来攻击受信任的
-
Flask模拟实现CSRF攻击的方法
CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账...... 造成的问题:个人隐私泄露以及财产安全. CSRF攻击示意图 客户端访问服务器时没有同服务器做安全验证 防止 CSRF 1.在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值 2.在 Form 表单中添加一个
-
Django中cookie的基本使用方法示例
前言 基于 Internet的各种服务系统应运而生,建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的一些信息:论坛作为 Internet发展的产物之一,在 Internet 中发挥着越来越重要的作用,是用户获取.交流.传递信息的主要场所之一,论坛常常也需要记录访问者的一些基本信息(如身份识别号码.密码.用户在 Web 站点购物的方式或用户访问该站点的次数).目前公认的是,通过 Cookie 和 Session 技术来实现记录访问者的一些基本信息. 下面就来一起看看Django中coo
-
Django中如何防范CSRF跨站点请求伪造攻击的实现
CSRF概念 CSRF跨站点请求伪造(Cross-Site Request Forgery). 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件.发消息,盗取你的账号,添加系统管理员,甚至于购买商品.虚拟货币转账等. CSRF攻击原理以及过程 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A: 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常
-
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
一.在django后台处理 1.将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项目中会自带的. MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middle
-
切记ajax中要带上AntiForgeryToken防止CSRF攻击
经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.AntiForgeryToken()会生成一对加密的字符串,分别存放在Cookies 和 input 中. 我们在ajax post中也带上AntiForgeryToken @model WebApplication1.Controllers.Person @{ ViewBag.Title = "In
随机推荐
- event.srcElement 用法笔记e.target
- 使用perl实现拆分数据表(mysql)并迁移数据实例
- 创建你的第一个AngularJS应用的方法
- struts1实现简单的登录功能实例(附源码)
- 基于springMvc+hibernate的web application的构建
- php 图片加水印与上传图片加水印php类
- PHP编译安装中遇到的两个错误和解决方法
- React组件生命周期详解
- 详解WordPress开发中get_header()获取头部函数的用法
- javascript中call,apply,bind的用法对比分析
- 解决jquery .ajax 在IE下卡死问题的解决方法
- javascript getElementsByTagName
- 详解Java的Hibernate框架中的List映射表与Bag映射
- sshd 限制登陆的几种方法总结
- c语言快速排序算法示例代码分享
- C数据结构循环链表实现约瑟夫环
- Andriod 读取网络图片实例代码解析
- ADO.NET 的最佳实践技巧
- 如何删除多级目录
- 厕所除臭方法小结 (香醋 清凉油)