是否可以使用 JavaScript 的 WebSocket API 在客户端与本机应用程序进行通信,就像小程序的替代品一样,必须访问文件系统?
我将通过 ws://localhost:xxxx 与客户端通信,但我不知道我是否可以做到。
如果可以的话,这将是安全的。我是否必须考虑一些安全因素?
不,您不能在用户的计算机上安装 WebSocket 服务器来替换访问本地文件系统的功能,就像 Java 小程序一样。
并非没有用户有意在自己的计算机上主动安装 WebSocket 服务器。
你最大的问题是 Javascript 客户端代码不能不受限制地访问用户的文件系统。 这是一项安全功能。 这是一项重要的安全功能。 您不能将用户计算机上的任意位置放置任意文件。
之后,Javascript 客户端代码也无法在您的系统上启动进程,即使它可以在任意位置安装 WebSocket 服务器。 同样,这是一项关键的安全功能。
最后,如果您的 Javascript 客户端代码可以在用户的计算机上安装和执行任意软件,那么您现在正在寻找的用例就不需要 WebSocket 服务器。
如果您要说服用户在您的用例(即访问用户的本地文件系统(上在自己的计算机上安装 WebSocket 服务器,那么您需要考虑重大的安全问题。 并非所有文件系统都具有基于用户和组的读/写/执行权限...即便如此,用户也可能从特权帐户中启动服务器。
浏览器被设计为隐式信任它所连接的服务器,只要它收到任何Javascript。 如果您的用户稍后浏览一个恶意站点,该站点知道您本地安装的 WebSocket 服务器以及它可能期望的命令,浏览器将很乐意允许恶意服务器将他们希望的任何命令发送到用户的 WebSocket 服务器。
我强烈建议尊重用户文件系统的神圣性并遵守浏览器对Javascript客户端访问本地计算机的限制,如果您决定尝试说服用户安装本地WebSocket服务器,则必须绝对注意尽可能具有安全意识。 验证*所有*输入,无论您是否认为攻击者不可能生成它,并且永远不要将已知风险列入黑名单,只将已知的安全功能列入白名单。
请记住,如果您做任何事情将用户的文件系统暴露给 Web,您几乎就是将他们计算机的钥匙交给任何可以找到门的人。