内容安全策略(CSP)常用安全设置
内容安全策略(CSP,Content-Security-Policy)是一种帮助防止跨站脚本(XSS)和其他代码注入攻击的安全标准。以下是一些 CSP 最常用的安全设置指令及其简要说明:
-
default-src:
这是最基本的指令,定义了加载资源的默认策略。如果没有为特定类型的资源指定策略,默认就使用这个策略。default-src 'self';
上面的例子只允许从当前源加载资源。
-
script-src:
控制JavaScript的执行来源。script-src 'self' cdn.example.com;
这里允许执行来自当前源和
cdn.example.com
的脚本。 -
style-src:
管理CSS样式表的加载。style-src 'self' fonts.googleapis.com;
允许从当前源和 Google Fonts 加载样式。
-
img-src:
规定图片加载的来源。img-src 'self' data:;
允许从当前源和 "data:" 协议(用于内联 base64 编码的图片)加载图片。
-
connect-src:
限制可以发起 XMLHttpRequest 或 WebSocket 连接的源。connect-src 'self' api.example.com;
-
font-src:
定义可加载字体的来源。font-src 'self' fonts.gstatic.com;
-
object-src:
控制插件对象(如 Flash)的加载。object-src 'none';
这个设置可以有效禁止任何插件的加载,提高安全性。
-
frame-src:
指定可以从哪些源加载 <frame> 或 <iframe> 元素。frame-src 'self' youtube.com;
-
media-src:
控制音视频媒体文件的加载。media-src 'self' videos.example.com;
-
child-src 和 worker-src (在较新版本的CSP中):
分别控制 worker 线程和 frame 的加载来源,有时会替代或补充 frame-src 和 worker-src 的旧指令。 -
upgrade-insecure-requests:
请求浏览器自动将 HTTP 资源升级为 HTTPS。upgrade-insecure-requests;
-
report-uri 或 report-to:
指定一个 URI 或一个组的名称来接收违反 CSP 策略的报告。report-uri /csp-violation-report;
-
Content-Security-Policy-Report-Only:
与Content-Security-Policy
相似,但仅记录策略违规而不实际阻止加载,常用于测试阶段。
这些设置可以根据网站的具体需求进行调整,以实现既安全又不影响正常功能的平衡。