这是我参与「第四届青训营 」笔记创作活动的第六天
Web 开发的安全之旅
攻击
XSS
CSRF
SQL Injection
另外cli os command server-side
SSRF
DoS
正则表达式的贪婪模式
什么是 DDoS 攻击?
分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。
DDoS 攻击利用多台受损计算机系统作为攻击流量来源以达到攻击效果。利用的机器可以包括计算机,也可以包括其他联网资源(如 IoT 设备)。
总体而言,DDoS 攻击好比高速公路发生交通堵塞,妨碍常规车辆抵达预定目的地。
DDoS 攻击的工作原理
DDoS 攻击是通过连接互联网的计算机网络进行的。
这些网络由计算机和其他设备(例如 IoT 设备)组成,它们感染了恶意软件,从而被攻击者远程控制。这些个体设备称为机器人(或僵尸),一组机器人则称为僵尸网络。
一旦建立了僵尸网络,攻击者就可通过向每个机器人发送远程指令来发动攻击。
当僵尸网络将受害者的服务器或网络作为目标时,每个机器人会将请求发送到目标的 IP 地址,这可能导致服务器或网络不堪重负,从而造成对正常流量的拒绝服务。
由于每个机器人都是合法的互联网设备,因而可能很难区分攻击流量与正常流量。
如何识别 DDoS 攻击
DDoS 攻击最明显的症状是网站或服务突然变慢或不可用。但是,造成类似性能问题的原因有多种(如合法流量激增),因此通常需要进一步调查。流量分析工具可以帮助您发现 DDoS 攻击的一些明显迹象:
- 来自单个 IP 地址或 IP 范围的可疑流量
- 来自共享单个行为特征(例如设备类型、地理位置或 Web 浏览器版本)的用户的大量流量
- 对单个页面或端点的请求数量出现不明原因的激增
- 奇怪的流量模式,例如一天中非常规时间段的激增或看似不自然的模式(例如,每 10 分钟出现一次激增)
DDoS 攻击还有其他更具体的迹象,具体取决于攻击的类型。
常见的 DDoS 攻击有哪几类?
不同类型的 DDoS 攻击针对不同的网络连接组件。为了解不同的 DDoS 攻击如何运作,有必要知道网络连接是如何建立的。
互联网上的网络连接由许多不同的组件或“层”构成。就像打地基盖房子一样,模型中的每一步都有不同的用途。
OSI 模型(如下图所示)是一个概念框架,用于描述 7 个不同层级的网络连接。
虽然几乎所有 DDoS 攻击都涉及用流量淹没目标设备或网络,但攻击可以分为三类。攻击者可能利用一种或多种不同的攻击手段,也可能根据目标采取的防范措施循环使用多种攻击手段。
为什么要部署严格的内容安全策略 (CSP)
跨站点脚本 (XSS)(将恶意脚本注入 Web 应用程序的能力)一直是十多年来最大的 Web 安全漏洞之一。
内容安全策略 (CSP) 是一个附加的安全层,有助于缓解 XSS。配置 CSP 涉及将内容安全策略 HTTP 标头添加到网页,并设置值以控制允许用户代理为该页面加载哪些资源。本文介绍如何使用基于随机数或哈希的 CSP 来缓解 XSS,而不是常用的基于主机允许列表的 CSP,这些 CSP 通常会使页面暴露给 XSS,因为它们可以在大多数配置中被绕过。
关键术语
nonce 是一个只使用一次的随机数,可用于将标记标记为受信任。<script>
关键术语
哈希函数是将输入值转换为压缩数值(哈希)的数学函数。哈希(如 SHA-256)可用于将内联标记标记为受信任。<script>
基于随机数或哈希的内容安全策略通常称为严格 CSP。当应用程序使用严格的CSP时,发现HTML注入漏洞的攻击者通常无法使用它们来强制浏览器在易受攻击的文档的上下文中执行恶意脚本。这是因为严格的 CSP 只允许在服务器上生成具有正确随机数值的哈希脚本或脚本,因此攻击者在不知道给定响应的正确随机数的情况下无法执行脚本。
若要保护站点免受 XSS 的侵害,请确保清理用户输入并使用 CSP 作为额外的安全层。CSP 是一种纵深防御技术,可以防止恶意脚本的执行,但它不能替代避免(并及时修复)XSS 错误。
什么是严格的内容安全政策?
严格的内容安全策略具有以下结构,可通过设置以下 HTTP 响应标头之一来启用:
- 基于随机数的严格 CSP
Content-Security-Policy: script-src 'nonce-{RANDOM}' 'strict-dynamic'; object-src 'none'; base-uri 'none';
- 基于哈希的严格 CSP
Content-Security-Policy: script-src 'sha256-{HASHED_INLINE_SCRIPT}' 'strict-dynamic'; object-src 'none'; base-uri 'none';
这是严格 CSP 的最精简版本。您需要对其进行调整以使其在各种浏览器中有效。有关详细信息,请参阅添加回退以支持 Safari 浏览器和旧版浏览器。
以下属性使上述 CSP 成为“严格”的,因此是安全的:
- 使用随机数或哈希值来指示站点开发人员信任哪些标记,并且应允许在用户的浏览器中执行这些标记。
'nonce-{RANDOM}'``'sha256-{HASHED_INLINE_SCRIPT}'``<script> - 设置
“严格动态”,通过自动允许执行由已受信任的脚本创建的脚本,减少部署基于随机数或基于哈希的 CSP 的工作量。这也解锁了大多数第三方JavaScript库和小部件的使用。 - 不基于 URL 白名单,因此不会受到常见 CSP 绕过的影响。
- 阻止不受信任的内联脚本,如内联事件处理程序或 URI。
javascript: - 限制禁用危险的插件,如Flash。
object-src - 限制阻止注入标记。这可以防止攻击者更改从相对 URL 加载的脚本的位置。
base-uri``<base>
\