首页 > 编程问答 >如何调试 "内容安全策略 (CSP) 脚本源代码";

如何调试 "内容安全策略 (CSP) 脚本源代码";

时间:2024-06-12 13:49:35浏览次数:27  
标签:security content-security-policy

我试图在我的 NextJS 应用程序中阻止不受信任的脚本标记。

我添加了"内容安全策略"安全标头,特别是"src-script"指令。但是我收到了一个错误,基本上是说有一些未知的脚本主机(除了列出的那些)违反了该指令。Chrome 浏览器并没有提供帮助,因为它不知道是哪个脚本违反了这一指令。

Problem

如何在不翻阅代码库的情况下识别应用程序中的所有 src 脚本源?

vercel.json 代码段:

{
  "headers":[
    {
      "source": "/(.*)"、
      "headers":[
        {
          "key": "Content-Security-Policy"、
          "value": "default-src 'self'; script-src 'self' *.posthog.com; style-src 'self';";
        }
      ]
    }
  ]
}

错误

错误

Error

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"script-src" 'self' https:// .posthog.com".*


遇到的问题是的内容安全策略 (CSP) 太过严格,导致合法的内联脚本被阻止。正在看到一个错误信息,表明某些内联脚本正在被阻止,因为它们不符合的 CSP 'script-src' 指令。

虽然建议不要使用内联脚本以获得最佳安全性,但如果必须使用它们,则有几种方法可以在的 CSP 中允许它们:

1. 使用哈希值:

  • 对内联脚本的内容进行哈希处理,并在的 CSP 'script-src' 指令中包含该哈希值。这将允许浏览器执行具有匹配哈希值的特定内联脚本。
  • 例如,如果的内联脚本的哈希值为 "sha256-someHashValue",的 CSP 将如下所示:

    script-src 'self' *.posthog.com 'sha256-someHashValue';

  • 注意: 每次更改内联脚本时,都需要更新哈希值。

2. 使用随机数 (Nonce):

  • 生成一个加密安全的随机数,并将其添加到的 CSP 'script-src' 指令和内联脚本标签中。
  • 例如:

    html <script nonce="yourNonceValue"> // 的内联脚本代码 </script>

    script-src 'self' *.posthog.com 'nonce-yourNonceValue';

  • 注意: 每次页面加载时,都需要生成一个新的随机数。

3. 识别和外部化:

  • 最安全的长期解决方案是识别所有内联脚本,并将它们移至外部文件。然后,可以将这些文件的来源包含在的 CSP 'script-src' 指令中。


要识别违反当前 CSP 的脚本,可以使用浏览器的开发者工具:

  1. 在 Chrome 中打开开发者工具 (F12)。
  2. 转到“控制台”选项卡。
  3. 加载的网页并查看任何与 CSP 相关的错误。
  4. 错误消息应指示被阻止的脚本及其来源。


记住,调整的 CSP 策略是一个迭代过程。从一个严格的策略开始,并在识别和解决违规行为时逐渐放宽它,这一点很重要。


标签:security,content-security-policy
From: 78570765

相关文章

  • 宝塔 nginx 安装 ModSecurity 模块
    本文基于modsecurity,ubuntu系统nginx搭建环境,需要先安装modsecurity,再编译安装nginx它是一款开源的的三方模块,功能包括http流量日志,实时检测等功能。ModSecurity核心规则集(CRS)提供以下类别的保户来防止攻击。官方宣传:◆HTTPProtection(HTTP防御)-HTTP协议和本地定义使用的......
  • 关于Spring Security的CORS
    目录一、CORS是什么二、同源安全策略三、SpringSecurity中CORS的开启四、其它处理方法一、CORS是什么        CORS(Cross-OriginResourceSharing,跨源/域资源共享)是一个W3C标准,一种允许当前域(domain)的资源(比如html/js/webservice)被其他域(domain)的脚本(比如AJ......
  • 什么是SpringSecurity的认证与授权?
    在SpringSecurity框架中,认证(Authentication)和授权(Authorization)是两个核心概念,它们是实现应用安全的基石。虽然这两个术语通常一起使用,但它们描述的是两个不同的安全过程。认证(Authentication)认证是确认某个用户的身份的过程。简而言之,认证过程是用来验证用户是否是......
  • SpringSecurity如何自定义用户认证逻辑?
    在SpringSecurity中自定义用户认证逻辑通常涉及到实现你自己的UserDetailsService或使用自定义的AuthenticationProvider。下面是通过这两种方式自定义用户认证逻辑的基本演示:使用UserDetailsService自定义UserDetailsService是SpringSecurity用于从数据库、L......
  • spring security中对并发登录的处理
    本文记录的springsecurity中对并发登录的处理,是基于使用session进行登录的场景,并且只适用于单体部署的场景一、session管理策略接口SessionAuthenticationStrategy针对同一个账号多次登录的问题,springsecurity抽象出了一个接口来处理同一个用户的多个sessionpublicinterf......
  • spring security 指定了 failureForwardUrl 的请求接口 但是没有效果
    springboot版本:3.3.0springsecurity版本:3.3.0代码如下:springsecurity配置类importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.web.builders......
  • Pod安全策略:PodSecurityPolicy(PSP)
    目录一.系统环境二.前言三.PodSecurityPolicy简介四.为什么需要PodSecurityPolicy五.给客户端授权六.启用PodSecurityPolicy(PSP)七.PSP规则之禁止创建特权用户pod八.PSP规则之数据卷8.1限定数据卷使用某一个目录8.2限定数据卷的类型为emptyDir九.PSP规则之指定使用宿主机网络十......
  • OWASP API Security Top 10解读
    数字经济时代,无论是互联网商业创新还是传统企业数字化转型,都在推动API数量与应用范围的爆发式增长。从只用于企业内部服务调用的1.0时代,到面向服务架构的2.0时代,再到如今成为开放平台和云原生微服务的3.0时代,API正在成为数字世界的基础设施,在企业的业务体系中发挥着越来越重要......
  • Content Security Policy 参数 值 详解
    例子:Content-Security-Policy:default-src'self';script-src'self'https://example.com;img-src'self'data:;style-src'self''unsafe-inline';font-src'self'https://example.com;这个CSP规......
  • SpringSecurity角色认证、数据库查询账号密码、退出
    在上一次我们实现了登录拦截,以及加密密码进行登录,这次我们要加上角色认证以及把加密后的账号密码放到数据库里进行查询然后登录,最后会有一个退出,退出之后就需要再次输入账号密码角色认证我们先在我们的config上面配置好我们的登录之后以及错误之后要去哪里,以及我们自己配置的......