WebSocket 可以替代 Java applet 吗?

Can WebSocket be an alternative to a Java applet?

是否可以使用 JavaScript 的 WebSocket API 在客户端与本机应用程序通信,就像小程序的替代品一样,它必须访问文件系统?

我会通过ws://localhost:xxxx和客户端通信,不知道能不能做到。

如果可以的话,这将是安全的。我需要考虑一些安全因素吗?

不,您不能像 Java applet 那样在用户机器上安装 WebSocket 服务器来取代访问本地文件系统的功能。

用户有意主动在自己的机器上安装 WebSocket 服务器。

您最大的问题是 Javascript 客户端代码无法不受限制地访问用户的文件系统。这是一项安全功能。这是一项重要 安全功能。您不能在用户机器上的任意位置放置任意文件。

在那之后,Java脚本客户端代码也无法在您的系统上启动进程,即使它可以在任意位置安装 WebSocket 服务器。同样,这是一项关键 安全功能。

最后,如果您的 Java 脚本客户端代码 可以 在用户的机器上安装和执行任意软件,您将不需要 WebSocket 服务器来使用您现在正在寻找的案例。


如果您要说服用户在他们自己的机器上为您的用例(访问用户的本地文件系统)安装 WebSocket 服务器,那么您需要考虑重大的安全问题。并非所有文件系统都具有基于用户和组的 read/write/execute 权限......即使如此,用户也可能从特权帐户中启动服务器。

浏览器被设计为隐式信任它所连接的服务器,只要它接收到任何 Java 脚本。如果您的用户后来浏览了一个恶意站点,该站点知道您本地安装的 WebSocket 服务器以及它可能期望的命令,浏览器将非常乐意允许恶意服务器向您用户的 WebSocket 服务器发送他们希望的任何命令。

我个人强烈建议尊重用户文件系统的神圣性并遵守浏览器对 Java 脚本客户端访问本地计算机的限制,如果您确实决定尝试说服您的用户安装本地 WebSocket 服务器,您必须绝对小心,尽可能注意安全。验证 *所有* 输入,无论您是否认为攻击者不可能生成它,永远不要将已知风险列入黑名单,仅将已知安全功能列入白名单。

请记住,如果您采取任何措施将用户的文件系统暴露在网络上,您几乎就是将他们计算机的钥匙交给了任何能找到门的人。