Python Django框架防御CSRF攻击的方法分析

 更新时间:2019年10月18日 11:33:58   作者:houyanhua1  
这篇文章主要介绍了Python Django框架防御CSRF攻击的方法,结合实例形式分析了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防护,只针对post表单提交进行防护。
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'django.middleware.security.SecurityMiddleware',
)

templates/应用名/demo.html(模板文件,csrf防护):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>修改密码页面</title>
</head>
<body>
<form method="post" action="/change_pwd_action">
  {% csrf_token %} {# csrf_token是Django提供的,用于csrf防护。该变量会替换成一个表单隐藏域。 #}
  新密码:<input type="password" name="pwd">
  <input type="submit" value="确认修改">
</form>
</body>
</html>

django防止csrf攻击的方式:

1) 默认打开csrf中间件。

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

防御原理:

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

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

相关文章

  • 使用Python和XML实现文件复制工具的完整代码

    使用Python和XML实现文件复制工具的完整代码

    在本篇博客中,我们将学习如何使用 wxPython 构建一个简单的文件复制工具,并将文件路径和目标目录的配置信息保存到 XML 文件中,通过这种方式,我们可以在下次运行程序时轻松加载之前保存的配置,需要的朋友可以参考下
    2024-08-08
  • python根据多个文件名批量查找文件

    python根据多个文件名批量查找文件

    这篇文章主要为大家详细介绍了python根据多个文件名批量查找文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Scrapy爬虫多线程导致抓取错乱的问题解决

    Scrapy爬虫多线程导致抓取错乱的问题解决

    本文针对Scrapy爬虫多线程导致抓取错乱的问题进行了深入分析,并提出了相应的解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • pandas.concat实现DataFrame竖着拼接、横着拼接方式

    pandas.concat实现DataFrame竖着拼接、横着拼接方式

    这篇文章主要介绍了pandas.concat实现DataFrame竖着拼接、横着拼接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Python数字比较与类结构

    Python数字比较与类结构

    这篇文章主要介绍了Python数字比较与类结构,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • python 包中的sched 事件调度器的操作方法

    python 包中的sched 事件调度器的操作方法

    sched模块内容很简单,只定义了一个类。它用来最为一个通用的事件调度模块,接下来通过本文给大家介绍python 包之 sched 事件调度器教程,需要的朋友可以参考下
    2022-04-04
  • 使用批处理脚本自动生成并上传NuGet包(操作方法)

    使用批处理脚本自动生成并上传NuGet包(操作方法)

    这篇文章主要介绍了使用批处理脚本自动生成并上传NuGet包的操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Python绘制动态的521玫瑰花

    Python绘制动态的521玫瑰花

    敲了这么多年代码,每年都得画一些心啊花啊什么的,所以现在常规的已经有些倦怠了,至少也得来个三维图形才看着比较合理,所以本文就来绘制一个动态的玫瑰花吧
    2023-05-05
  • Python函数装饰器的使用详解

    Python函数装饰器的使用详解

    大家好,本篇文章主要讲的是Python函数装饰器的使用详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • PyTorch搭建多项式回归模型(三)

    PyTorch搭建多项式回归模型(三)

    这篇文章主要为大家详细介绍了PyTorch搭建多项式回归模型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论