WebSocket可以替代Java小程序吗?

时间:2016-02-17 11:57:10

标签: javascript java websocket applet

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

我将通过ws:// localhost:xxxx与客户端沟通,但我不知道我是否可以这样做。

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

1 个答案:

答案 0 :(得分:1)

不,您不能在用户的计算机上安装WebSocket服务器来替换访问本地文件系统的功能,就像Java applet一样。

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

您最大的问题是Javascript客户端代码没有对用户文件系统的无限制访问权限。这是一项安全功能。这是重要的安全功能。您不能在任意位置将任意文件放在用户的计算机上。

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

最后,如果您的Javascript客户端代码可以在用户的计算机上安装并执行任意软件,那么您现在不需要WebSocket服务器来处理您正在寻找的用例。 / p>

如果您要说服用户在自己的计算机上为您的用例安装WebSocket服务器(即访问用户的本地文件系统),那么您将需要考虑重大的安全问题。并非所有文件系统都具有基于用户和组的读/写/执行权限......即使这样,用户也可以从特权帐户中启动服务器。

浏览器旨在隐式信任它所连接的服务器,直到它收到的任何Javascript。如果您的用户稍后浏览了一个了解您本地安装的WebSocket服务器的恶意站点,以及它可能期望的命令,浏览器将很乐意允许恶意服务器向您的用户的WebSocket服务器发送他们希望的任何命令。

我个人强烈建议尊重用户文件系统的神圣性并遵守浏览器对Javascript客户端访问本地计算机的限制,如果您决定试图说服您的用户安装本地WebSocket服务器,必须采取绝对谨慎的方式尽可能保持安全。验证 * all * 输入,无论您认为攻击者是否无法生成它,并且从不将已知风险列入黑名单,只需将已知安全功能列入白名单。

请记住,如果您做任何事情将用户的文件系统暴露给网络,那么您几乎可以将密钥交给他们的计算机,而不是任何能够找到门的人。