当前位置: 首页 > 编程笔记 >

django框架CSRF防护原理与用法分析

百里业
2023-03-14
本文向大家介绍django框架CSRF防护原理与用法分析,包括了django框架CSRF防护原理与用法分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了django框架CSRF防护。分享给大家供大家参考,具体如下:

CSRF防护

一、什么是CSRF?

CSRF: Cross-site request forgery,跨站请求伪造

用户登录了正常的网站A, 然后再访问某恶意网站,该恶意网站上有一个指向网站A的链接,那么当用户点击该链接时,则恶意网站能成功向网站A发起一次请求,实际这个请求并不是用户想发的,而是伪造的,而网站A并不知道。

攻击者利用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账等。

如果想防止CSRF,首先是重要的信息传递都采用POST方式而不是GET方式,接下来就说POST请求的攻击方式以及在Django中的避免

二、CSRF攻击演示

步骤1:登录成功后进入发帖界面,进行发帖(使用post请求发帖,测试时先关闭csrf中间件)

步骤2:限制登录成功后才能发帖

  • 可通过session保存登录成功的用户名
  • 判断session中是否有保存用户名,有才允许发帖

步骤3:CSRF攻击演示

三、CSRF防护

重要信息如金额、积分等的获取,采用POST请求

开启CSRF中间件(默认就是开启的)

# 项目下的setting.py
MIDDLEWARE_CLASSES = (
  ...
  # 开启csrf中间件(默认是开启的)
  'django.middleware.csrf.CsrfViewMiddleware',
  ...
)

表单post提交数据时加上 {% csrf_token %} 标签

四、防御原理【了解】

  1. 服务器在渲染模板文件时,会在html页面中生成一个名字叫做 csrfmiddlewaretoken 的隐藏域。
  2. 服务器会让浏览器保存一个名字为 csrftoken 的cookie信息
  3. post提交数据时,两个值都会发给服务器,服务器进行比对,如果一样,则csrf验证通过,否则提示403 Forbidden

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

 类似资料:
  • 目前我尝试使用Zend Framework 2的CSRF保护。 但每次我发送表单时,都会收到以下错误消息: 提交的表格不是来自预期的网站 我以这种方式实施了CSRF保护: 1)创建了一个Form Class并添加了csrf: 2)在view文件中呼应csrf元素: 我发现csrf令牌没有存储在会话中,但是为什么呢?

  • 我知道有关于Django Rest框架的答案,但我找不到解决问题的方法。 我有一个应用程序,它具有身份验证和一些功能。我向它添加了一个新的应用程序,它使用Django Rest框架。我只想在此应用程序中使用库。我还想提出POST请求,我总是收到以下回复: 我有以下代码: 我希望在不影响当前应用程序的情况下添加API。因此,我的问题是,我如何才能禁用此应用程序的CSRF?

  • 本文向大家介绍python web框架 django wsgi原理解析,包括了python web框架 django wsgi原理解析的使用技巧和注意事项,需要的朋友参考一下 前言 django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只写处理函数就可以了 django只是web框架 他也不负责写socket djan

  • 本文向大家介绍Laravel框架生命周期与原理分析,包括了Laravel框架生命周期与原理分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Laravel框架生命周期与原理。分享给大家供大家参考,具体如下: 引言: 如果你对一件工具的使用原理了如指掌,那么你在用这件工具的时候会充满信心! 正文: 一旦用户(浏览器)发送了一个HTTP请求,我们的apache或者nginx一般都转到inde

  • 本文向大家介绍thinkphp5框架路由原理与用法详解,包括了thinkphp5框架路由原理与用法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkphp5框架路由原理与用法。分享给大家供大家参考,具体如下: 路由理解 概括的说:路由就是网络请求的url与thinkphp应用层的逻辑处理地址的对应关系。 通俗的说:路由就是把url的请求优雅的对应到你想要执行的操作方法。 路由其

  • 本文向大家介绍Django CSRF跨站请求伪造防护过程解析,包括了Django CSRF跨站请求伪造防护过程解析的使用技巧和注意事项,需要的朋友参考一下 前言 CSRF全称Cross-site request forgery(跨站请求伪造),是一种网络的攻击方式,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF。 攻击原理 1、用户访问