当前位置: 首页 > Web前端 > JavaScript

内容安全策略学习笔记3:CSP指令的使用方法

时间:2023-03-27 13:04:24 JavaScript

HTTP安全头是网站安全的重要组成部分。它们保护店面免受XSS、代码注入、点击劫持等潜在攻击。Owasp很好地概述了可以应用的各种标头。HTTPStrict-Transport-SecurityHSTS安全标头强制Web浏览器仅通过https访问店面。这可以防止潜在的协议降级和cookie劫持。这是一个非常基本的标头,默认情况下应应用于Storefront应用程序。以下片段显示了一个示例标头配置:Strict-Transport-Security:max-age=31536000;includeSubDomainsX-Frame-OptionsX-Frame-Options标头可用于防止Spartacus从另一个来源加载到iframe中,这是减轻点击劫持的常用方法。点击劫持是一种恶意技术,通常通过在原始站点上覆盖iframe来诱使用户点击与用户感知不同的内容。但是,这个X-Frame-Options标头只能有两个值,DENY或SAMEORIGIN。由于Spartacus店面在SmartEdit的iframe中运行,因此Spartacus无法将其用作防止点击劫持的默认策略。SmartEdit在iframe中加载Spartacus,实际上是故意使用Clickjacking技术来支持内联内容管理。Content-Security-Policy:frame-ancestors提供了一种更复杂的方法来解决点击劫持,因此可以使用SmartEdit,同时仍然能够防止点击劫持。CSP在下面更详细地描述。为了确保IE11用户也受到保护,X-Frame-Options的使用仍然是相关的。如果存在带有frame-ancestors指令的CSP标头,现代浏览器将完全忽略X-Frame-Options标头。X-XSS-Protection通常不建议使用X-XSS-Protection安全标头,因为它会“在客户端引入额外的安全问题”。请参阅此链接。X-Content-Type-Options为了防止用户将恶意文件上传到后端API(又名MIME嗅探漏洞),可以添加X-Content-Type-Options标头。由于审计可能会报告缺少X-Content-Type-Options,因此建议无论如何都要添加此标头。示例:X-Content-Type-Options:nosniffContent安全策略(CSP)CSP可防止各种攻击,包括跨站点脚本和其他跨站点注入。可以使用多个指令详细指定此策略。该策略应包括以下指令:frame-ancestors指令:允许将店面加载到SmartEdit框架中。script-src指令防止从未知位置加载脚本。这不仅包括spartacus静态资源,还包括用于集成的第三方JS文件,如SmartEdit、Qualtrics等。script-src指令不应使用unsafe-inline或unsafe-eval来防止XSS。object-src指令以避免任何不安全的执行(即flash、java等)。default-src仅限于https仅参考本文档。