CSP通过限制资源加载来源有效防止XSS攻击,核心是配置script-src禁止内联脚本与动态执行,推荐使用nonce或哈希值允许安全脚本,避免unsafe-inline等宽松策略。
前端安全中,内容安全策略(Content Security Policy,简称 CSP)是防止跨站脚本攻击(XSS)、数据注入等攻击的重要手段。通过配置 CSP,可以明确浏览器只允许加载指定来源的资源,从而有效限制恶意代码的执行。JavaScript 作为可执行脚本的核心部分,是 CSP 防控的重点对象。
CSP 是一种由 HTTP 响应头或 meta 标签定义的安全策略,告诉浏览器哪些资源可以被加载和执行。它通过白名单机制控制脚本、样式、图片、字体等资源的来源。对于 JavaScript,CSP 能够:
这样即使攻击者成功注入了脚本,由于不符合 CSP 策略,也无法执行。
配置 CSP 主要通过设置 HTTP 响应头 Content-Security-Policy 实现。以下是一些关键指令及其对 JavaScript 的影响:
c 'self':默认所有资源只能从同源加载示例响应头:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; object-src 'none'; base-uri 'self';错误的 CSP 配置可能形同虚设,甚至影响正常功能。需要注意:
可通过浏览器开发者工具查看 CSP 违规日志,定位问题脚本。
CSP 不是万能的,应与其他前端安全措施配合使用:
基本上就这些。一个严格的 CSP 策略能极大增强前端应用的防御能力,尤其是针对 JavaScript 执行的控制。关键是合理规划资源来源,避免过度宽松,同时保证应用正常运行。