推荐答案
配置内容安全策略 (CSP) 的步骤
设置 HTTP 响应头:在服务器端设置
Content-Security-Policy
HTTP 响应头。例如:Content-Security-Policy: default-src 'self'; script-src 'self' https://apis.google.com; img-src 'self' https://example.com; style-src 'self' 'unsafe-inline';
定义策略指令:根据需求定义不同的策略指令,如
default-src
、script-src
、img-src
、style-src
等。测试和调整:在开发环境中测试 CSP 配置,确保所有资源加载正常,并根据需要调整策略。
部署到生产环境:将配置好的 CSP 部署到生产环境,并持续监控和优化。
本题详细解读
什么是内容安全策略 (CSP)?
内容安全策略 (CSP) 是一种安全机制,用于防止跨站脚本攻击 (XSS) 和其他代码注入攻击。通过定义哪些资源可以加载和执行,CSP 可以有效减少攻击面。
CSP 的主要指令
- default-src:定义默认的资源加载策略。
- script-src:定义 JavaScript 文件的加载策略。
- style-src:定义样式表的加载策略。
- img-src:定义图片资源的加载策略。
- connect-src:定义 AJAX、WebSocket 等连接的加载策略。
- font-src:定义字体资源的加载策略。
- object-src:定义插件(如 Flash)的加载策略。
- frame-src:定义 iframe 的加载策略。
- base-uri:定义文档的基础 URI。
- form-action:定义表单提交的目标 URL。
示例配置
Content-Security-Policy: default-src 'self'; script-src 'self' https://apis.google.com; img-src 'self' https://example.com; style-src 'self' 'unsafe-inline';
default-src 'self';
:默认只允许加载同源资源。script-src 'self' https://apis.google.com;
:允许加载同源和https://apis.google.com
的 JavaScript 文件。img-src 'self' https://example.com;
:允许加载同源和https://example.com
的图片资源。style-src 'self' 'unsafe-inline';
:允许加载同源样式表和内联样式。
注意事项
'unsafe-inline'
:允许内联脚本和样式,但会增加安全风险,应谨慎使用。'unsafe-eval'
:允许使用eval()
等动态代码执行函数,同样会增加安全风险。- 报告模式:可以使用
Content-Security-Policy-Report-Only
头来测试 CSP 配置,而不实际阻止资源加载。
通过合理配置 CSP,可以显著提升 Web 应用的安全性。