Web 什么';s通过检查响应头阻止我绕过CSP nonce?

Web 什么';s通过检查响应头阻止我绕过CSP nonce?,web,content-security-policy,Web,Content Security Policy,我对nonce如何与CSP相关感到有点困惑 对于任何网站,我都可以轻松地检查响应头以找到内容安全策略头,从那里我可以看到允许的nonce 如果我能找到nonce,如果我能插入内联脚本。我可以将nonce添加到内联脚本中并注入恶意代码。现在的安全性如何 此外,您是否可以使用meta标记以nonce交付CSP web服务器每次都必须提供唯一且不可用的nonce。因此,每次服务器发送响应时,它都会在两个位置设置noonce值 在脚本标签上(作为内联脚本的一部分),例如 在本例中,http客户端负责在

我对nonce如何与CSP相关感到有点困惑

对于任何网站,我都可以轻松地检查响应头以找到内容安全策略头,从那里我可以看到允许的nonce

如果我能找到nonce,如果我能插入内联脚本。我可以将nonce添加到内联脚本中并注入恶意代码。现在的安全性如何


此外,您是否可以使用meta标记以nonce交付CSP

web服务器每次都必须提供唯一且不可用的nonce。因此,每次服务器发送响应时,它都会在两个位置设置noonce值

  • 在脚本标签上(作为内联脚本的一部分),例如

  • 在本例中,http客户端负责在解析和评估内联脚本之前确保这些值匹配

    MDN的直接摘录:

    使用加密nonce的特定内联脚本的白名单 (数字使用一次)。服务器必须为每个节点生成唯一的nonce值 它传输策略的时间。提供一个不可用的 nonce,因为绕过资源的策略在其他方面是微不足道的

    参考文献:


    web服务器每次都必须提供唯一且不可用的nonce。因此,每次服务器发送响应时,它都会在两个位置设置noonce值

  • 在脚本标签上(作为内联脚本的一部分),例如

  • 在本例中,http客户端负责在解析和评估内联脚本之前确保这些值匹配

    MDN的直接摘录:

    使用加密nonce的特定内联脚本的白名单 (数字使用一次)。服务器必须为每个节点生成唯一的nonce值 它传输策略的时间。提供一个不可用的 nonce,因为绕过资源的策略在其他方面是微不足道的

    参考文献:


    没有什么可以阻止您,事实上,您可以使用它来加载未列入白名单的外部脚本,如下文所述。为了防止这种情况,您可以返回,一个用于nonce,另一个用于白名单。页面必须同时满足两个标题

    没有严格动力的“强”政策,实质上成为 无论如何都是严格动态的,因为任何正在运行的脚本都可以访问nonce 并使用它从任何源加载任何其他脚本


    没有什么可以阻止您,事实上,您可以使用它来加载未列入白名单的外部脚本,如下文所述。为了防止这种情况,您可以返回,一个用于nonce,另一个用于白名单。页面必须同时满足两个标题

    没有严格动力的“强”政策,实质上成为 无论如何都是严格动态的,因为任何正在运行的脚本都可以访问nonce 并使用它从任何源加载任何其他脚本


    没错,但我仍然可以查看响应标题以查看nonce,对吗?@SiddGorti您可以查看一次,但下次服务器必须发送与前一次不同的noonce值。您可以查看它,但这是无用的知识,因为当您重新加载页面时,它将是不同的nonce。你不能使用通过查看获得的信息。另外:CSP的存在是为了保护最终用户免受可能有外来者插入恶意内容的网站的攻击。最终用户可以通过某些方式规避该问题;但你为什么要这么做?这就像说我前门上的锁有问题,因为我可能会让它解锁……这是真的,但我仍然可以查看响应标题以查看当前值,对吗?@SiddGorti您可以查看一次,但下次服务器必须发送与前一次不同的noonce值。您可以查看它,但这是无用的知识,因为当你重新加载页面时,它将是一个不同的时刻。你不能使用通过查看获得的信息。另外:CSP的存在是为了保护最终用户免受可能有外来者插入恶意内容的网站的攻击。最终用户可以通过某些方式规避该问题;但你为什么要这么做?这就像说我前门上的锁有问题,因为我可能会把它锁上。。。。
      <script nonce="2726c7f26c">
          var inline = 1;
      </script>
    
       Content-Security-Policy: script-src 'nonce-2726c7f26c'