Jac*_*kel 11 javascript google-chrome-devtools content-security-policy electron
我正在创建一个 Electron 应用程序,并且根据Electron 安全教程,我添加了一个 CSP 元标记。运行应用程序时,这个问题出现在 devtools 中。
您站点
的内容安全策略阻止在 JavaScript 中使用“eval”内容安全策略 (CSP) 可防止将任意字符串评估为 JavaScript,从而使攻击者更难在您的站点上注入未经授权的代码。
为了解决这个问题,应避免使用eval(),new Function(),setTimeout([string], ...)和setInterval([string], ...)评估字符串。
无eval来电或字符串评估的其他情况下,存在于我自己的代码。该问题没有提供任何关于导致它的代码的线索,我尝试使用该'report-sample'值对输出没有影响。在 Chrome 中打开 HTML 文件时不会出现此问题。
我可以用一个非常基本的应用程序重新创建警告。
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);
Run Code Online (Sandbox Code Playgroud)
<!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>
Run Code Online (Sandbox Code Playgroud)
我想了解为什么会出现此问题并解决它,而不仅仅是抑制警告。
Sag*_*r M -2
从版本 5 开始,nodeIntegration 的默认值从 true 更改为 false。您可以在创建浏览器窗口时启用它:
app.on('ready', () => {
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
}
});
});
Run Code Online (Sandbox Code Playgroud)
并从 html 中删除它
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4422 次 |
| 最近记录: |