我可以阻止webpack捆绑的node_modules使用window.postMessage吗?

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

为了安全起见,我需要禁止webpack捆绑的第三方模块使用 window.postMessage 与我的Electron应用程序中的其他进程通信。

这可能吗?

security webpack electron node-modules
1个回答
0
投票

一个标准的技巧可能会有帮助:简单地将该方法移到window的另一个变量中,也许像这样。

window._postMessage = window.postMessage;
window.postMessage = () => {};

首先在你的渲染脚本中运行这个方法,或者使用 <script> 标签,而使用该标签的插件则无法再发送事件(事实上,它们不会崩溃,但永远不会得到响应)。

编辑

如果你想确保只有授权的用户才能使用它,类似这样的方法就可以了。

function createSecurePostMessage() {
  const _postMessage = window.postMessage;

  return {
    get() {return function(...args) {
      if (isAuthorized(...args) {
         _postMessage(...args);
      }
    }
  }
}
window.postMessage = createSecurePostMessage().get();

现在原来的postMessage在函数内部,无法访问 你可以实现一个方法,例如,检查某个消息是否可以发送。如果有人再次调用create,那么这个有保障的postMethod就只是再次被 "保障 "了。

© www.soinside.com 2019 - 2024. All rights reserved.