内容安全策略不适用于 html

问题描述 投票:0回答:1

我已经在nodejs中设置了内容安全策略(CSP),并且它正在应用于node。但是,对于根 html 页面,未应用 CSP。如何借助nodejs应用在html上。

    app.use(function(req, res, next) {
    res.setHeader("Content-Security-Policy", "default-src 'self'; font-src 'self'; img-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-src 'self'; connect-src 'self' ");
    return next();
});
html node.js content-security-policy csp
1个回答
0
投票

我尝试使用restify代替express服务器,并使用与express几乎相同的代码,您可以为静态文件设置CSP和X-Frame-Options标头。 我不知道 Express 是否存在错误,或者是否有其他方法,但这是我正在使用的解决方法。

const restify = require("restify");
const { join } = require("path");

const server = restify.createServer();

// Middleware to set X-Frame-Options and Content Security Policy (CSP) headers
server.use((req, res, next) => {
  res.setHeader("X-Frame-Options", "DENY");
  const allowedDomain = "https://my-website.com";
  res.setHeader("Content-Security-Policy", `frame-ancestors ${allowedDomain}`);
  return next();
});

// Serve static files from the 'public' directory
server.get(
  "/*",
  restify.plugins.serveStatic({
    directory: join(__dirname, "public"),
    default: "index.html",
  })
);

server.listen(8080, () => {
  console.log("Server is running on port 8080");
});
© www.soinside.com 2019 - 2024. All rights reserved.