CSP(Content Security Policy,内容安全策略)是一种Web应用程序的安全机制,它通过指定一个策略来限制浏览器中可加载的资源,从而有效地减少跨站脚本攻击(XSS)等Web攻击的风险。
CSP 策略可以通过 HTTP 标头(Content-Security-Policy)或 meta 标签( )来指定。CSP 策略规定了哪些资源可以被加载(例如 JavaScript、CSS、图像、字体等),以及如何处理不符合策略的请求(例如阻止加载、报告违规等)。
CSP 策略可以通过以下方式来增强 Web 应用程序的安全性:
-
禁止内联脚本:将 JavaScript 代码与 HTML 混合在一起的内联脚本容易受到 XSS 攻击。通过 CSP,可以禁止内联脚本的执行,只允许从外部文件中加载 JavaScript。
-
限制资源来源:通过 CSP,可以指定哪些域名下的资源可以被加载,从而限制来自非法或不可信的来源的恶意代码。
-
报告违规:CSP 可以设置为报告模式,当有不符合策略的请求发生时,将会向指定的 URI 发送报告。
总之,CSP 策略是一种可以有效减少 Web 应用程序遭受攻击风险的安全机制。
当你在你的网站上使用了 CSP 策略后,可以指定只能从特定域名下加载 JavaScript,例如:
Content-Security-Policy: script-src 'self' https://trusted-domain.com;
上述 CSP 策略指定了只允许从同一域名下加载 JavaScript('self'),以及指定了可以加载 JavaScript 的另一个域名 https://trusted-domain.com。
这意味着如果恶意攻击者试图通过插入内联 JavaScript 代码或从其他不可信的来源加载 JavaScript 来攻击你的网站,这些代码将被 CSP 策略阻止加载。
如果这些代码不符合 CSP 策略,浏览器会根据 CSP 的设置,将其阻止加载或报告违规,从而增加了你的网站的安全性。