在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攻击的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 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

随机推荐