Electron / Chrome: CSP connect-sr c не работает - Проблема с безопасностью? - PullRequest
0 голосов
/ 17 июня 2020

Я создаю электронное клиентское приложение, которое находит сервер в локальной сети, а затем подключается к этому серверу с помощью socket.io. Я хотел бы защитить клиента, запретив ему подключаться к другим серверам, кроме моего, с помощью CSP. Забавно: хотя Chrome выдает нарушение CSP, он все равно подключается.

Вот важные части моего кода:

main. js

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, "preload.js"),
      nodeIntegration: false,
      enableRemoteModule: false,
      contextIsolation: true,
      sandbox: false,
    },
  });

  mainWindow.loadFile("src/index.html");
}

preload. js

const { ipcRenderer } = require("electron");
const io = require("socket.io-client");

process.once("loaded", () => {
  ipcRenderer.on("connectSocket", (event, data) => {
    connectSocket(data);
  });
});

function connectSocket(ip) {
  const socket = io("http://" + ip + ":3000");

  socket.on("connect", () => {
    console.log("connected");
  });

}

index. html метатеги

<meta
  http-equiv="Content-Security-Policy"
  content=" default-src 'self'; connect-src https://example.com"
/>
<meta
  http-equiv="X-Content-Security-Policy"
  content="default-src 'self'; connect-src https://example.com"
/>

Итак, если сервер обнаружен на 192.168.178.99 (клиент на 192.168.178.11) и я передаю это из основного процесса в предварительный загрузчик функции connectSocket, Chrome / Electron выдает нарушение CSP, например:

websocket.js:124 Refused to connect to 'ws://192.168.178.99:3000/socket.io/?EIO=3&transport=websocket&sid=hrNlyFY6i7-S1fUTAAAK' because it violates the following Content Security Policy directive: "connect-src https://example.com".

Что правильно. Но потом все равно подключается. Это почему? Разве он не может подключаться только к https://example.com?

По крайней мере, так сказано в документации: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src

Это Chrome 83.0.4103.104, Electron 9.0.4, Node 12.14.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...