Node和Socket.io…阻止外部客户端连接
Node and Socket.io ... prevent outside clients from connecting?
嗨,我的web应用程序有一个聊天室,遇到了一个问题。我认为这与设置origins
选项有关?但我有疑问,如果能给我指引正确的方向,我将不胜感激。简而言之,我发现,不直接在我网页上的用户只需在客户端脚本中添加connect(ip:port)
功能,就可以轻松连接到聊天端口。需要什么安全机制来防止这种访问。此外,我并没有使用node.js
来实际服务于网页,而是使用laravel。Node主要实现聊天功能,在客户端之间传输消息,并将消息存储在内存中。
我希望我的问题足够清楚,如果不让我知道
基于浏览器的webSocket连接(例如,从浏览器中的Javascript启动的连接)可以通过正确的服务器端设置限制为"同源",这样只有来自您自己网站的网页才能连接。这是因为浏览器协作并宣布连接的合法来源,这样服务器就可以决定传入的连接是否合法。
非基于浏览器的webSocket连接,例如从另一台服务器或浏览器外的某个脚本进行的连接,不能限制为相同的来源(因为没有可信代理设置它们的来源)。如果你想控制这些类型的连接,你需要某种身份验证方案或API密钥或类似的东西,或者放弃对其进行监管,并通过其他方式控制你需要控制的任何东西(速率限制、用户登录、检测非人连接等)
在这方面,webSocket连接实际上与ajax连接没有什么不同。如果一个网页可以使用它,那么除非你实现某种身份验证方案,否则它几乎可以对整个互联网开放。
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Node和Socket.io…阻止外部客户端连接
- node.js表示将外部图像推送到客户端
- HTML客户端可移植文件生成-无外部资源或服务器调用
- 外部回调-然后如何回调到客户端
- 如何在 IIS 日志中捕获客户端外部 URL 单击
- 如何获取外部图像并将其编码为客户端 WebApp 上的 base64
- 在 Chrome 中加载外部 SVG 时获取外部 SVG 的正确客户端高度
- 在帮助程序外部未定义的客户端上获取流星
- JavaScript - 检测外部站点协议 - 客户端
- JQuery客户端在localhost外部失败
- 使用客户端页面上的信息在外部填充数据库
- 从外部URL客户端获取数据
- 客户端下载外部html内容,发送到django服务器,处理后的数据发送回客户端
- 是否有可能将图像从外部源转换为base64字符串客户端
- 如何在Meteor中重定向到外部URL并收集客户端数据
- 流星客户端外部Javascript文件问题
- 本地客户端包含的外部 html 文件未显示
- 来自一个外部 IP 地址的 WebSocket 客户端