如何禁用内容安全策略并保持安全?

时间:2020-10-26 20:30:33

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

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

谢谢:)

1 个答案:

答案 0 :(得分: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

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

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

// 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: [],
    },
  })
);