节点和 Socket.io ... 阻止外部客户端连接?
Node and Socket.io ... prevent outside clients from connecting?
您好,我的 Web 应用程序遇到了一个问题,该应用程序有一个聊天 room.From 调查我认为它与设置 origins
选项有关?但我有疑问,如果能帮助我朝着正确的方向前进,我将不胜感激。简而言之,我发现不直接访问我的网页的用户只需在其客户端脚本中添加 connect(ip:port)
函数即可轻松连接到聊天端口。需要什么样的安全机制来防止这种访问。此外,我没有使用 node.js
来实际提供网页服务,而是 laravel。 Node 主要实现聊天功能和与客户端之间的消息传输以及将它们存储在内存中。
我希望我的问题足够清楚,如果不清楚请告诉我
基于浏览器的 webSocket 连接(例如,在浏览器中从 Javascript 发起的连接)可以通过正确的服务器端设置限制为 "same-origin",这样只有来自您自己站点的网页可以连接。这是因为浏览器合作并宣布连接来自的合法来源,以便服务器可以决定传入连接是否合法。
非基于浏览器的 webSocket 连接,例如从另一台服务器或浏览器外部的某些脚本建立的连接不能限于同一来源(因为没有受信任的代理设置它们来自的来源)。如果你想控制这些类型的连接,你将需要某种身份验证方案或 API 密钥或类似的东西,或者放弃监管它并控制你需要以其他方式控制的任何东西(速率限制,用户登录、检测非人员连接等...)。
在这方面,webSocket 连接实际上与 ajax 连接没有什么不同。如果网页可以使用它,那么除非您实施某种身份验证方案,否则它几乎对整个互联网开放。
您好,我的 Web 应用程序遇到了一个问题,该应用程序有一个聊天 room.From 调查我认为它与设置 origins
选项有关?但我有疑问,如果能帮助我朝着正确的方向前进,我将不胜感激。简而言之,我发现不直接访问我的网页的用户只需在其客户端脚本中添加 connect(ip:port)
函数即可轻松连接到聊天端口。需要什么样的安全机制来防止这种访问。此外,我没有使用 node.js
来实际提供网页服务,而是 laravel。 Node 主要实现聊天功能和与客户端之间的消息传输以及将它们存储在内存中。
我希望我的问题足够清楚,如果不清楚请告诉我
基于浏览器的 webSocket 连接(例如,在浏览器中从 Javascript 发起的连接)可以通过正确的服务器端设置限制为 "same-origin",这样只有来自您自己站点的网页可以连接。这是因为浏览器合作并宣布连接来自的合法来源,以便服务器可以决定传入连接是否合法。
非基于浏览器的 webSocket 连接,例如从另一台服务器或浏览器外部的某些脚本建立的连接不能限于同一来源(因为没有受信任的代理设置它们来自的来源)。如果你想控制这些类型的连接,你将需要某种身份验证方案或 API 密钥或类似的东西,或者放弃监管它并控制你需要以其他方式控制的任何东西(速率限制,用户登录、检测非人员连接等...)。
在这方面,webSocket 连接实际上与 ajax 连接没有什么不同。如果网页可以使用它,那么除非您实施某种身份验证方案,否则它几乎对整个互联网开放。