网站内容策略( 内容安全策略(CSP)兼容的主要类型属性和手段 )
优采云 发布时间: 2022-01-03 13:09网站内容策略(
内容安全策略(CSP)兼容的主要类型属性和手段
)
内容安全政策 (CSP)
内容安全策略 (CSP) 是额外的安全层,用于检测和缓解某些类型的攻击,包括跨站点脚本 (XSS (en-US)) 和数据注入攻击。无论是数据窃取、网站内容污染还是恶意软件的传播,这些都是主要的攻击手段。
CSP被设计成完全向后兼容(除了CSP2在向后兼容中明确提到的不一致;更多细节见本章1.1)。不支持CSP的浏览器也可以合作通常使用已实现 CSP 的服务器,反之亦然:不支持 CSP 的浏览器将忽略它,并照常运行,并默认使用标准的 Web 内容同源策略。如果 网站 不支持提供一个 CSP 标头,浏览器也使用标准。
为了使 CSP 可用,您需要配置您的 Web 服务器以返回 Content-Security-Policy HTTP 标头(有时您会看到一些对 X-Content-Security-Policy 标头的引用,这是旧的版本,你不需要这样指定)
另外,元素也可以用来配置策略,例如
CSP 的主要目标是减少和报告 XSS 攻击。 XSS 攻击利用浏览器对从服务器获取的内容的信任。恶意脚本会在受害者的浏览器中运行,因为浏览器信任其内容的来源,即使有时脚本并非来自其应有的位置。
CSP 允许服务器管理员通过指定有效域(即浏览器识别的可执行脚本的有效来源)来减少或消除 XSS 攻击所依赖的载体。兼容 CSP 的浏览器只会执行从白名单域获取的脚本文件,而忽略所有其他脚本(包括内联脚本和 HTML 事件处理属性)。
作为一种终极保护形式,从未允许脚本执行的网站可以选择完全禁止脚本执行。
服务器除了限制可以加载内容的域外,还可以指定允许哪些协议;例如(从理想化的安全角度来看),服务器可以指定所有内容必须通过 HTTPS 加载。一套完整的数据安全传输策略,不仅强制使用HTTPS进行数据传输,还为所有cookie打上安全标志,cookie打上安全标志,并提供自动重定向,使HTTP页面指向HTTPS版本。 网站 您还可以使用 Strict-Transport-Security HTTP 标头来确保连接到它的浏览器仅使用加密通道。
配置内容安全策略包括在页面中添加Content-Security-Policy HTTP头,并配置相应的值来控制用户代理(浏览器等)可以为页面获取哪些资源。例如,一个可以上传文件和显示图像的页面应该允许图像来自任何地方,但限制表单的 action 属性只能为指定的端点赋值。设计合理的内容安全策略应该能够有效地保护页面免受跨站点脚本攻击。本文解释了如何正确构建这样的头部并提供一些示例。
您可以使用 Content-Security-Policy HTTP 标头来指定您的策略,如下所示:
Content-Security-Policy: policy
策略参数是一个字符串,其中收录描述您的 CSP 策略的各种说明。
一个策略由一系列策略指令组成,每个指令描述了针对特定类型资源和有效范围的策略。您的策略应该收录一个 default-src 策略指令,当其他资源类型不符合您的策略时应用该指令(请参阅 default-src 以获取完整列表)。策略可以收录 default-src 或 script-src (en-US) 指令以防止内联脚本运行,并消除对 eval() 的使用。策略还可以收录 default-src 或 style-src (en-US) 指令以限制来自元素或样式属性的内联样式。
本节提供了一些常用安全策略解决方案的示例。
网站管理员希望所有内容都来自网站的同一来源(不包括其子域)
Content-Security-Policy: default-src 'self'
网站 管理员允许内容来自受信任的域名及其子域(域名不必与设置 CSP 的域名相同)
Content-Security-Policy: default-src 'self' *.trusted.com
网站 管理员允许 Web 应用程序用户在自己的内容中收录来自任何来源的图片,但限制来自(从)受信任的资源提供者的音频或视频,并且所有脚本必须来自特定的宿主服务器获取可信代码。
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
这里的各种内容默认只允许从文档所在的源获取,但也有以下例外:
某网上银行网站的管理员希望保证网站的所有内容都是通过SSL获取的,以防止攻击者*敏*感*词*用户请求。
Content-Security-Policy: default-src https://onlinebanking.jumbobank.com