我正在创建一个电子应用程序,并根据电子安全教程添加了一个CSP标记。运行应用程序时,devtools中会出现此问题。
网站的内容安全策略阻止在JavaScript中使用“eval”内容安全策略(CSP)防止将任意字符串计算为JavaScript,从而使攻击者更难在站点上注入未经授权的代码。要解决此问题,请避免使用
eval()
、new Function()
、setTimeout([string], ...)
和setInterval([string], ...)
计算字符串。
在我自己的代码中没有出现eval
调用或其他字符串计算的情况。这个问题没有给出导致它的代码的任何线索,我使用'report-sample'
值的尝试对输出没有任何影响。在Chrome中打开HTML文件时不会出现此问题。
我可以用一个非常基本的应用程序重新创建警告。
main.js
const path = require("path");
const { app, BrowserWindow } = require("electron");
const createWindow = () => {
let mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
contextIsolation: true,
nodeIntegration: false,
}
});
mainWindow.loadURL(`file://${path.join(__dirname, "/index.html")}`);
};
app.on("ready", createWindow);
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
<title>Document</title>
</head>
<body>
<h1>CSP Issue Test</h1>
</body>
</html>
我想了解这个问题出现的原因,并加以解决,而不是仅仅压制这个警告。
发布于 2021-08-12 08:07:40
基于电子Github的问题,“这条日志消息目前正在开发中,如果你运行你的打包应用程序,它将不会发生。”这是根据电子贡献者之一。
这个问题现在已经结束了,但它仍然是活跃的,一些用户说它有点混乱(我同意)。基于此,我认为我们只是在开发过程中忽略了它。当应用程序按照投稿人的要求打包时,它就会消失,尽管我自己还没有测试过。
发布于 2021-03-24 07:38:03
从第5版开始,nodeIntegration的默认设置由true改为false。您可以在创建浏览器窗口时启用它:
app.on('ready', () => {
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
}
});
});
并将其从html中删除。
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
https://stackoverflow.com/questions/65445255
复制相似问题