Toolypet
安全工具/CSP构建器

CSP构建器

可视化构建Content-Security-Policy头

预设

指令

Default fallback for other directives

Controls allowed JavaScript sources

Controls allowed CSS sources

Controls allowed image sources

Controls allowed font sources

Controls allowed fetch/XHR/WebSocket targets

Controls allowed iframe sources

Controls allowed plugin sources (Flash, etc.)

Restricts URLs for <base> element

Restricts form submission targets

Controls who can embed this page

Upgrade HTTP to HTTPS automatically

选项

启用后,违规行为会被报告但不会被阻止。适合测试使用。

生成的CSP头

Content-Security-Policy: default-src 'self'

实现示例

add_header Content-Security-Policy "default-src 'self'";
Header set Content-Security-Policy "default-src 'self'"
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

CSP构建器指南

学习如何创建Content-Security-Policy头来保护您的网站

什么是Content-Security-Policy?

Content-Security-Policy(CSP)是一种HTTP响应头,帮助防止跨站脚本攻击(XSS)、点击劫持和其他代码注入攻击。它允许您指定允许在网站上加载的内容来源,让您对脚本、样式、图片和其他资源进行精细控制。

使用方法

  1. 选择一个预设(严格、中等或宽松)作为起点
  2. 根据需要启用和配置各个指令
  3. 查看安全警告并相应调整设置
  4. 复制生成的头并添加到Web服务器配置中

最佳实践

常见问题

如果CSP设置太严格会怎样?

如果CSP太严格,合法资源可能被阻止,导致网站功能失效。这就是为什么建议先使用仅报告模式。在此模式下,违规会被报告到服务器(如果配置了report-uri),但不会实际被阻止,让您能在强制执行策略前发现问题。

'self'和'none'有什么区别?

'self'只允许来自与您网站相同源(相同协议、主机和端口)的内容。'none'阻止该类型的所有内容。例如,object-src 'none'阻止所有插件(Flash、Java等)加载,这是安全最佳实践。

为什么'unsafe-inline'被认为是危险的?

'unsafe-inline'允许内联脚本和样式,这会削弱CSP的大部分XSS防护。能够注入HTML的攻击者也能注入内联脚本。应该使用nonce(script-src 'nonce-random123')或hash(script-src 'sha256-...')来允许特定的内联脚本同时阻止注入的脚本。

如何允许Google Analytics或其他第三方脚本?

将特定域名添加到script-src指令中。对于Google Analytics,您可能需要:script-src 'self' https://www.googletagmanager.com https://www.google-analytics.com。还需要将其域名添加到connect-src用于API调用,以及img-src用于跟踪像素。

CSP可以替代其他安全头吗?

不能,CSP是对其他安全头的补充。您还应该使用:X-Content-Type-Options: nosniff、X-Frame-Options(虽然CSP中的frame-ancestors可以替代它)、X-XSS-Protection、Strict-Transport-Security(HSTS)和Referrer-Policy。每个头都处理不同的安全问题。