当前位置: 首页 > news >正文

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

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相关的主题。他们的网页还包括适用于任何系统的安全原则。

相关文章:

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

django安全性 django针对安全方面有一些处理&#xff0c;学习如何进行处理设置&#xff0c;也有利于学习安全测试知识。 CSRF 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;CSRF&#xff09;是一种网络攻击方式&#xff0c;攻击者欺骗用户在自己访问的网…...

7.react useReducer使用与常见问题

useReducer函数 1. useState的替代方案.接收一个(state, action)>newState的reducer, 并返回当前的state以及与其配套的dispatch方法2. 在某些场景下,useReducer会比useState更加适用,例如state逻辑较为复杂, 且**包含多个子值**,或者下一个state依赖于之前的state等清楚us…...

c#泛型(generic)

概述&#xff1a; C#中的泛型&#xff08;Generics&#xff09;是一种允许在编写类、方法和委托时使用参数化类型的机制。泛型允许我们编写更通用、可重用的代码&#xff0c;可以避免类型转换和重复编写类似的代码。 泛型的基本语法如下所示&#xff1a; class ClassName<…...

【力扣每日一题】2023.8.30 到家的最少跳跃次数

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一只跳蚤&#xff0c;我们可以操控它前跳 a 格或是后跳 b 格&#xff0c;不能跳到小于0的位置&#xff0c;有一些被禁止的点不…...

精读《算法题 - 地下城游戏》

今天我们看一道 leetcode hard 难度题目&#xff1a;地下城游戏。 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士…...

随记-Kibana Dev Tools,ES 增删改查 索引,Document

索引 创建索引 创建索引 PUT index_test创建索引 并 修改分片信息 # 创建索引 并 修改分片信息 PUT index_test2 { # 必须换行, PUT XXX 必须独占一行&#xff0c;类似的 其他请求也需要独占一行 "settings": {"number_of_shards": 1, # 主分片"…...

什么是架构,架构的本质是什么

不论是开发人员还是架构师&#xff0c;我们都一直在跟软件系统打交道&#xff0c;架构是在工作中出现最频繁的术语之一。那么&#xff0c;到底什么是架构&#xff1f;你可能有自己的答案&#xff0c;也有可能没有答案。对“架构”的理解需要我们不断在实践中思考、归纳、演绎&a…...

Python爬虫(十七)_糗事百科案例

糗事百科实例 爬取糗事百科段子&#xff0c;假设页面的URL是: http://www.qiushibaike.com/8hr/page/1 要求&#xff1a; 使用requests获取页面信息&#xff0c;用XPath/re做数据提取获取每个帖子里的用户头像连接、用户姓名、段子内容、点赞次数和评论次数保存到json文件内…...

Ae 效果:CC Threads

生成/CC Threads Generate/CC Threads CC Threads&#xff08;CC 编织条&#xff09;效果基于当前图层像素生成编织条图案和纹理。可以用在各种设计中&#xff0c;如背景设计、图形设计、文字设计等。 ◆ ◆ ◆ 效果属性说明 Width 宽度 设置编织的宽度。 默认值为 50。值越大…...

Kotlin 协程 - 多路复用 select()

一、概念 又叫选择表达式&#xff0c;是一个挂起函数&#xff0c;可以同时等待多个挂起结果&#xff0c;只取用最快恢复的那个值&#xff08;即多种方式获取数据&#xff0c;哪个更快返回结果就用哪个&#xff09;。 同时到达 select() 会优先选择先写子表达式&#xff0c;想随…...

学习笔记-ThreadLocal

ThreadLocal 什么是ThreadLocal&#xff1f; ThreadLocal 是线程本地变量类&#xff0c;在多线程并行执行过程中&#xff0c;将变量存储在ThreadLocal中&#xff0c;每个线程中都有独立的变量&#xff0c;因此不会出现线程安全问题。 应用举例 解决线程安全问题&#xff1a;例…...

python利用pandas统计分析—groupby()函数的使用

文章目录 一、groupby使用场景二、groupby基本原理三、groupby分组运算基础聚合操作&#xff1a;只能选择一种聚合操作agg 聚合操作&#xff1a;可以针对同列选择不同聚合方法transformapply 四、groupby分组后去重统计nunique()五、groupby分组后重命名列名rename()直接重新命…...

OPENCV实现ORB特征检测

# -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/8/31 """ import cv2 import numpy as np# 读图像 img = cv2.imread(F:\\learnOpenCV\\openCVLearning\\pictures\\chess.jpg)...

W5100S-EVB-PICO主动PING主机IP检测连通性(十)

前言 上一章节我们用我们开发板在UDP组播模式下进行数据回环测试&#xff0c;本章我们用开发板去主动ping主机IP地址来检测与该主机之间网络的连通性。 什么是PING&#xff1f; PING是一种命令&#xff0c; 是用来探测主机到主机之间是否可通信&#xff0c;如果不能ping到某台…...

使用 Nginx 搭建文件下载服务器

文章目录 一、基础环境二、适用场景三、方法和步骤四、其他说明 版权声明&#xff1a;本文为CSDN博主「杨群」的原创文章&#xff0c;遵循 CC 4.0 BY-SA版权协议&#xff0c;于2023年8月27日首发于CSDN&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;http…...

链式栈StackT

C关键词&#xff1a;内部类/模板类/头插 C自学精简教程 目录(必读) C数据结构与算法实现&#xff08;目录&#xff09; 栈的内存结构 空栈&#xff1a; 有一个元素的栈&#xff1a; 多个元素的栈&#xff1a; 成员函数说明 0 clear 清空栈 clear 函数负责将栈的对内存释放…...

Fiddler中 AutoResponder 使用

Fiddler的 AutoResponder &#xff0c;即URL重定向功能非常强大。不管我们做URL重定向&#xff0c;还是做mock测试等&#xff0c;都可以通过该功能进行实践。 下面&#xff0c;小酋就来具体讲下该功能的用法。 Enable rules 启用规则Unmatched requests passthrough 没有匹配…...

77GHz线性调频连续波雷达

文章目录 前言 一、背景 二、优缺点 三、工作原理 四、电路模块设计 4.1.LFMCW信号源 4.2.发射电路 4.3.接收电路 4.4.信号处理器 五、应用 5.1.汽车测距 5.2.军事方面 5.3.气象方面 总结 前言 这篇文章是博主本科期间整理的关于77GHz线性调频连续波雷达的相关资料&#xff0c;…...

YOLOV8改进:更换为MPDIOU,实现有效涨点

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 2.涨点效果:更换为MPDIOU,实现有效涨点! 目录…...

BookStack开源免费知识库docker-compose部署

BookStack&#xff08;书栈&#xff09;是一个功能强大且易于使用的开源知识管理平台&#xff0c;适用于个人、团队或企业的文档协作和知识共享。 一、BookStack特点 简单易用&#xff1a;BookStack提供了一个直观的用户界面&#xff0c;使用户能够轻松创建、编辑和组织文档多…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

路由基础-路由表

本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中&#xff0c;往往存在多个不同的IP网段&#xff0c;数据在不同的IP网段之间交互是需要借助三层设备的&#xff0c;这些设备具备路由能力&#xff0c;能够实现数据的跨网段转发。 路由是数据通信网络中最基…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础

在构建任何动态、数据驱动的Web API时&#xff0c;一个稳定高效的数据存储方案是不可或缺的。对于使用Python FastAPI的开发者来说&#xff0c;深入理解关系型数据库的工作原理、掌握SQL这门与数据库“对话”的语言&#xff0c;以及学会如何在Python中操作数据库&#xff0c;是…...