安全测试-django防御安全策略

news2024/11/26 7:33:52

django安全性
django针对安全方面有一些处理,学习如何进行处理设置,也有利于学习安全测试知识。

CSRF

跨站点请求伪造(Cross-Site Request Forgery,CSRF)是一种网络攻击方式,攻击者欺骗用户在自己访问的网站上执行恶意操作,通过利用用户当前的身份和权限,发送未经用户许可的请求。

通俗地说,假设你正在浏览社交媒体网站,并且已经登录。在另一个标签页中,你点击了一个通过电子邮件或其他途径获取到的恶意链接,而你并没有察觉它是恶意的。这个链接实际上是一个指向你的银行网站的请求,并且攻击者已经在链接中包含了一些恶意操作,例如转账给攻击者的账户。如果你刚好在银行网站上保持着登录状态,并且该网站没有适当的CSRF防御措施,那么这个恶意操作就可能成功执行。

常用防御措施

为了防御CSRF攻击,以下是一些常用的防御措施:

  1. CSRF Token:应用程序可以为每个用户生成一个唯一的CSRF令牌,并将其嵌入到请求中。提交的每个POST请求都需要包含这个令牌,并在服务器端进行验证。这样,恶意网站无法获取到有效的令牌,并且无法正确构造请求。

  2. SameSite Cookie:通过设置SameSite属性为Strict或Lax,可以限制Cookie仅在同一站点发起的请求中自动附加。这样可以防止跨站点请求攻击。

  3. 验证来源域名:服务器可以验证请求的来源域名,如果请求不来自合法的域名,则拒绝执行操作。可以使用Referer头、Origin头或检查host字段来验证来源。

  4. 双重确认:对于敏感操作,用户可以被要求输入额外的确认信息,例如密码、验证码等,以增加额外的安全层面。

  5. 安全编码实践:开发人员应遵循安全的编码实践,例如适当地转义和验证用户输入,避免在请求中泄露敏感信息等。

这些防御措施可以增加网站的安全性,从而防范CSRF攻击。然而,每个网站的情况可能不同,综合考虑错误消息、访问控制、安全审计等其他因素,定制和应用适合自己应用程序的CSRF防御策略是非常重要的。

django防御

1)CSRF 中间件默认在 MIDDLEWARE 配置中被激活。如果你覆盖了这个配置,请记住 ‘django.middleware.csrf.CsrfViewMiddleware’ 应该排在任何假设 CSRF 攻击已经被处理的视图中间件之前。
2) 在使用POST表单的模板中,模板添加

<form method="post">{% csrf_token %}

SQL注入

SQL 注入能让恶意用户能在数据库中执行任意 SQL 代码。这将导致记录被删除或泄露。

Django 的 querysets 在被参数化查询构建出来时就被保护而免于 SQL 注入。查询的 SQL 代码与查询的参数是分开定义的。参数可能来自用户从而不安全,因此它们由底层数据库引擎进行转义。

Django 也为开发者提供了书写 原始查询 或执行 自定义 sql 的权力。应当尽可能少地使用这些方法,并且您应该小心并准确地转义一切用户可控的参数。另外,在使用 extra() 和 RawSQL 时应当小心谨慎。

防御点击劫持-Clickjacking protection

防止网页被嵌入其他iframe里
浏览器支持 X-Frame-Options HTTP 头,它表明是否允许在框架或 iframe 中加载资源。如果响应包含值为 SAMEORIGIN 的头,那么只有当请求来自同一个网站时,浏览器才会在框架中加载资源。如果头被设置为 DENY,那么无论请求是由哪个网站发出的,浏览器都会阻止资源在框架中加载。

django点击劫持

https://docs.djangoproject.com/zh-hans/4.2/ref/clickjacking/#clickjacking-prevention
假设一家在线商店有一个页面,登录的用户可以点击“立即购买”来购买商品。用户为了方便,选择了保持登录商店。攻击者网站可能会在自己的一个页面上创建一个“I Like Ponies”按钮,并在一个透明的 iframe 中加载商店的页面,使“立即购买”按钮无形中覆盖在“I Like Ponies”按钮上。如果用户访问攻击者的网站,点击“I Like Ponies”将导致无意中点击“立即购买”按钮,并在不知情的情况下购买该商品。

django防御实例

如直接访问django应用
在这里插入图片描述
在这里插入图片描述
可以看到 X-Frame-Options被设置为DENY,禁止嵌入其他iframe。

一个包含iframe的html嵌入该地址

<!DOCTYPE html>
<html>
<head>
    <title>包含 iframe 的页面</title>
</head>
<body>
    <h1>这是一个包含 iframe 的页面</h1>
    
    <iframe src="http://127.0.0.1:8000/polls/" width="500" height="300"></iframe>
</body>
</html>

访问这个html发现无法显示网页
在这里插入图片描述

用户上传内容攻击

用户上传内容攻击指的是恶意用户或攻击者通过在网站或应用程序上上传含有恶意代码或恶意文件的内容,以进行攻击或滥用。

这种攻击可能导致以下安全问题:

  1. 代码注入:攻击者可能上传包含恶意脚本的文件,这些脚本将在其他用户访问这些文件时在其浏览器中执行。这种攻击方式被称为代码注入或远程代码执行(Remote Code Execution,RCE),它可以导致被攻击用户的浏览器受到控制,执行任意恶意操作。

  2. 文件包含漏洞:攻击者可能上传包含敏感数据或系统文件路径的文件,以发现和利用文件包含漏洞。通过利用这些漏洞,攻击者可能能够读取、替换或删除系统上的重要文件。

  3. 恶意文件传播:攻击者可能上传包含恶意软件、病毒或勒索软件的文件。当其他用户下载或执行这些文件时,他们的计算机可能受到感染或遭受数据泄露、数据损坏或勒索等威胁。

常用安全措施

为了防御用户上传内容攻击,以下是一些常用的安全措施:

  1. 文件类型验证:限制用户上传的文件类型,并验证上传文件的扩展名和MIME类型。只允许上传可信和安全的文件类型,拒绝不明文件或高风险文件类型。

  2. 文件大小限制:限制上传文件的大小,避免超过服务器或应用程序的处理能力。

  3. 文件包含漏洞修复和安全配置:确保应用程序已修复可能导致文件包含漏洞的代码问题,并在服务器上进行适当的安全配置,以限制对敏感文件的访问,并避免暴露系统路径等信息。

  4. 安全的文件存储:将用户上传的文件存储在安全的位置,并采取措施确保文件不能通过直接访问进行执行或下载。将上传的文件存储在非Web可访问的目录中,使用服务器端脚本提供安全的读取和下载接口。

  5. 安全编码实践:在开发过程中,使用适当的输入验证和输出编码技术来防止代码注入和跨站脚本攻击(XSS)等安全问题。

综上所述,用户上传内容攻击是一个严重的安全威胁,应该在应用程序的设计、开发和维护过程中采取适当的安全措施来防御这种攻击,并定期进行安全审计和漏洞扫描以及及时修复发现的漏洞。

django建议

1)考虑从云服务或 CDN 提供静态文件服务来避免此类问题。
2)网络服务器配置中把这些上传文件限制在一个合理的大小,以防止拒绝服务(DOS)攻击。在 Apache 中,可以使用 LimitRequestBody 指令
3)确保像 Apache 的 mod_php 这种能把静态文件当作代码来执行的处理程序已经关闭
4)选择定义一个列表来限制允许用户上传的文件的扩展名

其他建议

  1. 确保你的 Python 代码是在网络服务器的根目录之外。这将确保你的 Python 代码不会被意外地作为纯文本提供(或意外地执行)。
  2. 小心一切 用户上传的文件。 Django 不会对认证用户的请求进行节流。为了防止针对认证系统的暴力攻击,你可以考虑部署一个 Django
    插件或网络服务器模块来节制这些请求。
  3. Keep your SECRET_KEY, and SECRET_KEY_FALLBACKS if in use, secret. 用防火墙限制缓存系统和数据库的可访问性是个好主意
  4. 看一下开源 Web 应用安全计划(OWASP)Top 10 list ,它指定了网络应用程序中一些常见的漏洞。尽管 Django
    拥有解决某些问题的工具,但在项目设计中必须考虑其他问题。
    2023版:https://owasp.org/API-Security/editions/2023/en/0x11-t10/
  5. Mozilla 讨论了很多与 web security相关的主题。他们的网页还包括适用于任何系统的安全原则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实验二】基尔霍夫定律和叠加定理

【实验内容】 【实验报告】 表一线路图 表二线路图 线路1 线路2 同时作用 【得分】

两台电脑共享文件设置

步骤一&#xff1a;确保网络连接正常&#xff0c;可网线直连。 两台电脑IP设置&#xff0c;例&#xff1a; 步骤二&#xff1a;启用共享功能。 1.在【控制面板】中选择【网络和Internet】&#xff1b; 2.点击【网络和共享中心】&#xff0c;在左侧导航栏中&#xff0c;点击【…

政府网站之守护:如何确保信息真实与透明,避免政治风险?

在数字化时代&#xff0c;政府网站已经成为公众获取官方信息和政府政策的主要途径。确保这些信息的真实性、透明性和及时性是维护 政府公信力的关键。特别是在涉及落马官员、政治敏感信息等内容时&#xff0c;更需要加强审查与管理&#xff0c;避免带来不必要的政治风险。 那…

视频云存储/安防监控/AI视频智能分析网关V3:工服检测功能详解

在一些工地、后厨、化工、电力等特定的场景中&#xff0c;工服的穿戴是必不可少的。这不仅是安全制度的要求&#xff0c;更能降低工作风险、提高工作效率。TSINGSEE青犀AI 边缘计算网关硬件 —— 智能分析网关可以通过实时监测和识别工人的工装穿戴情况&#xff0c;确保他们符合…

DBeaver 23.1.5 发布

导读DBeaver 是一个免费开源的通用数据库工具&#xff0c;适用于开发人员和数据库管理员。DBeaver 23.1.5 现已发布&#xff0c;更新内容如下. Data editor 重新设计了词典查看器面板 UI 空间数据类型&#xff1a;曲线几何线性化已修复 数据保存时结果选项卡关闭的问题已解决…

springboot实战(三)之多环境部署配置文件生效方式

环境&#xff1a; jdk&#xff1a;1.8 springboot版本&#xff1a;2.7.15 配置&#xff1a; 1.新建yml文件 在resources包中创建application-dev.yml、application-testing.yml两个yml文件 2.配置 在application.yml进行配置生效文件 3.注意事项 新建yml的名称必须以&qu…

GBDT,XGBoost算法理解

pyspark实现GBDT 参考资料&#xff1a; datawhalechina/ensemble-learning (github.com)

Stable Diffusion 从入门到企业级应用0401

一、概述 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第01节&#xff0c; 利用Stable Diffusion ControlNet Inpaint模型精准控制图像生成。本部分内容&#xff0c;位于整个Stable Diffusion生…

java 多个list取交集

java 多个list集合根据某个字段取出交集 模拟多个list集合&#xff0c;如下图 如果只有一个集合那么交集就是当前集合&#xff0c;如果有多个集合&#xff0c;那么第一个集合当做目标集合&#xff0c;在通过目标集合去和剩下的集合比较&#xff0c;取出相同的值&#xff0c;运…

CAR-T商品化的第一步

1、CAR-T细胞的体外扩增能力 CAR-T细胞疗法需要先从患者体内获得T淋巴细胞&#xff0c;然后通过体外转基因技术 transduce CAR靶向结构域。这一过程需要在细胞培养体系中得到充分的扩增&#xff0c;以获得足够的治疗CAR-T细胞数量。因此&#xff0c;CAR-T细胞的体外扩增能力直…

邮箱授权码的获取(以qq邮箱为例)

第一步&#xff0c;登录你需要授权的邮箱&#xff08;如登录qq邮箱主页面&#xff09; 第二步&#xff0c;点击设置&#xff0c;选择账号 往下拉&#xff0c;找到POP3等服务中的服务状态&#xff0c;点击开启服务 在通过认证后得到授权码 在一些第三方登录中我们通过这个授权码…

想跳槽?先别急!这5个问题搞懂再离职也不迟!

创建坐席组的功能模块&#xff0c;如何进行测试用例设计&#xff1f; 解答&#xff1a; 功能测试&#xff0c;使用等价类划分法去分析创建坐席的每个输入项的有效及无效类&#xff0c;同步考虑边界值去设计对应的测试用例&#xff1a; 先进行冒烟测试&#xff0c;正常创建坐席…

如何让视频小于50m?最新视频压缩技巧分享

在我们的日常生活中&#xff0c;视频文件经常占据较大的存储空间&#xff0c;给我们存储和传输带来了困扰&#xff0c;那么如何将视频文件压缩至50m以下呢&#xff1f;下面就为大家分享三个实用的方法&#xff0c;轻松解决视频过大问题。 方法一&#xff1a;调整视频分辨率 视…

用小额贷款产品微粒贷借钱靠谱方便,应急周转值得一试

平时资金周转应急&#xff0c;除了找亲戚朋友之外&#xff0c;要说用着放心靠谱的渠道&#xff0c;小编是相当认可微粒贷的。微粒贷作为微众银行旗下的小额贷款&#xff0c;正规可靠&#xff0c;值得信赖。接下来做个详细介绍&#xff0c;平时有资金应急周转需要的小伙伴&#…

掌握Linkedin营销小技巧,再也不愁客户

众所周知&#xff0c;Linkedin是发展业务、拓展人脉的好地方&#xff0c;在过去的一年里&#xff0c;93%的B2B营销人员最常使用该平台来有机分发内容。Linkedin也因为能产生较好的营销效果而成为跨境业务开发的选择平台。 有些企业可以使用Linkedin向潜在用户进行营销和接触&a…

如何在`Pycharm`中配置基于WSL的`Python Interpreters`,以及配置基于WSL的`Terminal`

文章目录 一、创建pycharm用户并授予sudo权限0. 启动WSL下的CentOS1. 创建pycharm用户并授予sudo权限2. 设置pycharm用户为wsl启动Linux的默认用户3. 重启并重新登录wsl下的CentOS4. 验证pycharm用户的sudo权限 二、创建基于WSL的Python Interpreter1. 添加基于WSL的Python Int…

Matlab——二维绘图(最为详细,附上相关实例)

为了帮助各位同学备战数学建模和学习Matlab的使用&#xff0c;今天我们来聊一聊 Matlab 中的绘图技巧吧&#xff01;对于 Matlab 这样的科学计算软件来说&#xff0c;绘图是非常重要的一项功能。在数据处理和分析时&#xff0c;良好的绘图技巧能够更直观地呈现数据&#xff0c;…

诗诺克科技引领数字资产智能交易革命

在当今全球金融市场中&#xff0c;数字资产的崛起正引发着一场前所未有的变革。随着区块链技术不断演进和数字资产广泛获得认可&#xff0c;智能交易系统正在迅速成为投资者和交易者的首选工具。这一趋势不仅在全球范围内显著&#xff0c;而且为金融领域的未来带来了令人瞩目的…

[ROS]yolov7部署ROS

Yolov7是一种基于PyTorch深度学习框架的目标检测算法&#xff0c;具有高精度和快速的特点&#xff0c;被广泛应用于机器人领域。将Yolov7部署到ROS中可以方便地实现机器人对环境的感知和理解。 在部署Yolov7到ROS之前&#xff0c;需要准备以下环境和工具&#xff1a; Ubuntu …

Nginx实现自签名SSL证书生成与配置

Nginx实现自签名SSL证书生成与配置 一、Nginx实现自签名SSL证书生成与配置1.名词介绍2.生成私钥3.生成公钥4.生成解密的私钥key5.签名生成证书6.配置证书并验证 二、总结 一、Nginx实现自签名SSL证书生成与配置 1.名词介绍 &#xff08;1&#xff09;key 私钥 明文–自己生成…