在开发 Chrome 扩展时,内容安全策略(Content Security Policy, CSP)是一个非常重要的概念。CSP 用于防止跨站脚本(XSS)攻击和其他代码注入攻击。Chrome 扩展的 CSP 默认设置非常严格,以确保扩展的安全性。
Chrome 扩展的默认 CSP 是:
script-src 'self'; object-src 'self';
这意味着:
你可以在 manifest.json
文件中自定义 CSP。以下是一些常见的自定义策略及其解释:
如果你需要从特定域加载脚本,可以在 manifest.json
中添加该域:
{
"name": "My Extension",
"version": "1.0",
"manifest_version": 2,
"content_security_policy": "script-src 'self' https://example.com; object-src 'self';"
}
默认情况下,Chrome 扩展不允许使用内联脚本(如 <script>
标签中的代码或 onclick
属性中的代码)。如果你确实需要使用内联脚本,可以使用 unsafe-inline
,但这会降低安全性:
{
"name": "My Extension",
"version": "1.0",
"manifest_version": 2,
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self';"
}
注意:使用 unsafe-inline
会使你的扩展更容易受到 XSS 攻击,因此应尽量避免。
默认情况下,Chrome 扩展不允许使用 eval()
函数。如果你确实需要使用 eval()
,可以使用 unsafe-eval
,但这同样会降低安全性:
{
"name": "My Extension",
"version": "1.0",
"manifest_version": 2,
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
}
注意:使用 unsafe-eval
会使你的扩展更容易受到代码注入攻击,因此应尽量避免。
以下是一个自定义 CSP 的完整示例:
{
"name": "My Extension",
"version": "1.0",
"manifest_version": 2,
"content_security_policy": "script-src 'self' https://example.com 'unsafe-inline'; object-src 'self';"
}
如果你的扩展在加载时遇到 CSP 相关的问题,可以通过 Chrome 的开发者工具进行调试:
chrome://extensions/
)。领取专属 10元无门槛券
手把手带您无忧上云