启用CSP(内容安全策略)
CSP通过HTTP响应头Content-Security-Policy定义允许加载的资源来源,限制内联脚本和动态代码执行。例如:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'
此配置仅允许加载同源脚本和指定CDN的资源,内联脚本需显式启用'unsafe-inline'(不推荐)。
禁用内联脚本和样式
通过CSP的script-src和style-src指令禁止内联代码:
Content-Security-Policy: script-src 'self'; style-src 'self'
避免使用'unsafe-inline',强制所有代码通过外部文件加载,减少XSS风险。
限制外部资源加载
通过connect-src、img-src等指令控制外部资源访问:
Content-Security-Policy: img-src 'self' data:; font-src 'self' https://fonts.gstatic.com
仅允许加载同源图片和指定域名字体,阻止恶意资源加载。
启用nonce或hash机制
为动态脚本生成唯一nonce值或基于哈希的校验:
Content-Security-Policy: script-src 'nonce-abc123'
HTML中匹配的脚本:
<script nonce="abc123">console.log("Allowed");</script>
或使用哈希:
Content-Security-Policy: script-src 'sha256-base64EncodedHash'
禁止eval和动态代码执行
通过script-src指令禁用eval()和类似函数:
Content-Security-Policy: script-src 'self' 'unsafe-eval'
避免使用'unsafe-eval',防止攻击者通过字符串注入执行代码。
报告违规行为
启用CSP报告功能,通过report-uri或report-to收集违规日志:
Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint
违规日志可帮助调整策略,平衡安全性与功能性。
逐步实施CSP
采用Content-Security-Policy-Report-Only模式测试策略:
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'
此模式仅记录违规行为而不阻止资源,适合调试后再强制执行。
额外建议
- 结合其他安全头(如
X-XSS-Protection、X-Content-Type-Options)增强防护。 - 定期审查CSP策略,确保其与业务需求同步且无安全漏洞。
- 使用工具(如CSP Evaluator)验证策略有效性。
1380

被折叠的 条评论
为什么被折叠?



