【问题标题】:how to disable Content Security Policy and stay secure? [closed]如何禁用内容安全策略并保持安全? [关闭]
【发布时间】:2023-03-25 08:46:01
【问题描述】:

我想禁用 CSP - app.use(helmet.contentSecurityPolicy()),因为它会阻止任何内联脚本。 hashnonce 解决方案 (https://content-security-policy.com/examples/allow-inline-script/) 对我的应用来说太过分了。 xss-clean package 或其他解决方案是否足以获得常规-中等安全性?

谢谢:)

【问题讨论】:

  • 只是使用不同的 CSP?有几种可能的设置。
  • 我已经检查了可能的设置,但没有简单快捷的方法来做到这一点。你能详细说明一下吗?
  • 您是否拥有 CSP 并且您是否将其应用于您的内容?或者,是否有代理为您执行此操作?这里的问题是,您是否尝试在将 CSP 应用于页面后对其进行更改?
  • 如果你想“保持安全”,“过度杀伤”通常不是一个坏主意。
  • @RandyCasburn - 我不知道如何回答,我还是初学者.. 基本上helmet 包已经阻止了我的内联脚本,我想禁用 csp 以摆脱这个问题而没有任何原因重大安全问题..

标签: javascript node.js security content-security-policy inline-scripting


【解决方案1】:

您可以使用您提到的helmet 中间件完全控制。

reference docs 很清楚如何设置您的 CSP。

设置后,您始终可以使用 this one 等验证器评估您的 CSP 的强度。

来自文档:

如果没有提供指令,则设置以下策略(添加空格以提高可读性):

default-src 'self';
base-uri 'self';
block-all-mixed-content;
font-src 'self' https: data:;
frame-ancestors 'self';
img-src 'self' data:;
object-src 'none';
script-src 'self';
script-src-attr 'none';
style-src 'self' https: 'unsafe-inline';
upgrade-insecure-requests

您可以按照文档中的说明在加载“helmet”时设置策略。

例如,这里是一个示例配置:

// Sets "Content-Security-Policy: default-src 'self';script-src 'self' example.com;object-src 'none';upgrade-insecure-requests"
app.use(
  helmet.contentSecurityPolicy({
    directives: {
      defaultSrc: ["'self'"],
      scriptSrc: ["'self'", "example.com"],
      objectSrc: ["'none'"],
      upgradeInsecureRequests: [],
    },
  })
);

【讨论】:

  • "unsafe-inline 源列表值可用于允许内联脚本,但这也违背了 CSP 的大部分目的"(来自content-security-policy.com/examples/allow-inline-script)仍然有使用 csp 的优势在这种情况下?
  • 好吧,你不能同时拥有它......对:-/
  • 大声笑我明白.. 很抱歉有很多问题,但根据您的经验 - 这是一个严重的安全问题吗?还是很高兴?
  • 我已更新我的答案以包含一个 CSP 验证链接,您可以使用验证您的 CSP:csp-evaluator.withgoogle.com
  • 安全总是一个很好的想法,正如 Pointy 用他的指针尖锐地指出的那样:-)
猜你喜欢
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2021-12-06
  • 2021-01-09
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
相关资源
最近更新 更多