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

 更新时间:2019年07月22日 11:56:23   作者:笑-笑-生  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • python之用Numpy和matplotlib画一个魔方

    python之用Numpy和matplotlib画一个魔方

    这篇文章主要介绍了如何用Numpy和matplotlib画一个魔方,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • MacOS(M1芯片 arm架构)下安装PyTorch的详细过程

    MacOS(M1芯片 arm架构)下安装PyTorch的详细过程

    这篇文章主要介绍了MacOS(M1芯片 arm架构)下安装PyTorch的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • python中如何对多变量连续赋值

    python中如何对多变量连续赋值

    这篇文章主要介绍了python中如何对多变量连续赋值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Python中处理YAML文件的正确方法

    Python中处理YAML文件的正确方法

    在现代软件开发中,YAML(YAML Ain’t Markup Language)因其简洁和易于阅读的特性,被广泛用于配置文件,Python 作为一种流行的编程语言,提供了多种处理 YAML 文件的库,本文给大家介绍了Python中处理YAML文件的正确方法,需要的朋友可以参考下
    2024-11-11
  • 详解Python如何批量采集京东商品数据流程

    详解Python如何批量采集京东商品数据流程

    这不快过年了,又是要买年货,又是要给女朋友买礼物的,分析一下价格,看看哪些是真的降价了
    2022-01-01
  • Python编辑器Pycharm安装配置超详细教程

    Python编辑器Pycharm安装配置超详细教程

    PyCharm是一款功能强大的Python编辑器,具有跨平台性,下面这篇文章主要给大家介绍了关于Python编辑器Pycharm安装配置的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 详解Python最长公共子串和最长公共子序列的实现

    详解Python最长公共子串和最长公共子序列的实现

    这篇文章主要介绍了详解Python最长公共子串和最长公共子序列的实现。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 《Python学习手册》学习总结

    《Python学习手册》学习总结

    本篇文章是读者朋友在学习了《Python学习手册》这本书以后,总结出的学习心得,值得大家参考学习。
    2018-01-01
  • 利用python模拟实现POST请求提交图片的方法

    利用python模拟实现POST请求提交图片的方法

    最近在利用python做接口测试,其中有个上传图片的接口,在网上各种搜索,各种尝试。下面这篇文章主要给大家介绍了关于利用python模拟实现POST请求提交图片的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • 100 个 Python 小例子(练习题一)

    100 个 Python 小例子(练习题一)

    这篇文章主要介绍 Python 小例子,有数字组合、个税计算、完全平方数、三数排序、斐波那契数列、copy、九九乘法表、暂停一秒输出等多个实例,需要的朋友可以参考一下
    2021-10-10

最新评论