设置csp的unsafe-eval,怎么验证浏览器是否生效

设置csp的unsafe-eval,怎么验证浏览器是否生效
最新回答
天边シ深海

2026-10-30 14:22:22

要验证浏览器是否生效了包含unsafe-eval的CSP策略,可通过浏览器控制台检查、查看网络请求状态、手动测试动态代码执行或使用在线工具验证等方法。

1. 浏览器控制台检查

当CSP策略生效时,浏览器控制台会直接反馈策略限制情况。若未在script-src中设置unsafe-eval,页面尝试使用eval()、new Function()或动态生成脚本时,控制台会显示明确错误,例如:Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script。若已正确设置unsafe-eval,此类错误将消失,且动态代码可正常执行。此时可通过控制台观察是否仍有相关报错,若无报错则说明策略生效。

2. 查看网络请求状态

通过浏览器开发者工具的“Network”选项卡,可观察资源请求是否被CSP策略阻止。未设置unsafe-eval时,动态生成的脚本请求可能被标记为“blocked”或显示错误状态;设置后,若相关请求状态变为正常(如200),则表明策略允许动态代码执行,验证生效。

3. 手动测试动态代码执行

在页面中直接测试动态代码执行是直观的验证方式:

  • 未设置unsafe-eval时:尝试执行eval("console.log('test')")或new Function("console.log('test')")(),浏览器会阻止执行并报错。
  • 设置unsafe-eval后:若上述代码能正常输出日志(如控制台显示“test”),则说明策略已生效,允许动态代码执行。
4. 使用在线工具验证

通过CSP Evaluator等在线工具分析页面CSP策略,可快速确认script-src指令是否包含unsafe-eval。输入页面URL后,工具会解析CSP头信息,并明确标注是否允许unsafe-eval。若工具显示script-src包含该关键字,且策略描述与预期一致(如允许动态代码执行),则可验证策略生效。

注意事项:

  • 验证前需确保CSP策略已正确部署到页面(通过HTTP头或<meta>标签)。
  • 部分浏览器可能对CSP的严格模式有差异,建议跨浏览器测试。
  • 动态代码测试需在可控环境中进行,避免安全风险。