CF10中websocket认证的密码是如何发送的?
Posted
技术标签:
【中文标题】CF10中websocket认证的密码是如何发送的?【英文标题】:How are passwords sent for websocket's authentication in CF10? 【发布时间】:2012-05-15 16:12:25 【问题描述】:在文档Specifying WebSocket authentication details 上,它没有提到密码是如何从客户端的authenticate()
JS 函数发送到服务器的onWSAuthenticate
的。它们是通过安全渠道发送的吗?还是纯文本?
附带问题:可以使用什么工具/浏览器/浏览器的插件来嗅探 websocket 的流量?
谢谢。
【问题讨论】:
无法回答身份验证问题,但 Fiddler 应该允许您嗅探 websocket 的流量。 【参考方案1】:通过 authenticate() 函数发送的用户名/密码是明文形式。您实际上可以在 cfwebsocket.js 中看到它(它已缩小,因此搜索身份验证)。在服务器上,如果调用是用于身份验证,它将调用 application.cfc 中的 onWSAuthenticate() 传递给函数的任何用户名或密码。所以加密/解密/验证的逻辑在于开发者。
任何 TCP 监视器都可以用于嗅探 websocket 的流量,例如 wireshark 、 TCPMon 等
【讨论】:
是否有任何解决方法可以安全地发送密码?谢谢。 因为它留给开发人员处理加密,正如@Shardino 回答的那样,要么使用 SSL 加密,要么先加密数据然后发送。您可以将 Encrypt()/Decrypt() 函数与您自己的种子(最好是随机的)/算法一起使用 如何使用SSL加密?是否有一个选项可以指定要启用 SSL 的authenticate()
函数的目标?【参考方案2】:
主要是为了进一步了解我自己对它的工作原理的理解。来自websocket.org 网站:
通过向代理服务器发出 HTTP CONNECT 语句来建立隧道,该语句请求代理服务器打开与特定主机和端口的 TCP/IP 连接。一旦建立了隧道,通信就可以畅通无阻地通过代理。由于 HTTP/S 以类似的方式工作,因此基于 SSL 的安全 WebSockets 可以利用相同的 HTTP CONNECT 技术。
因此,如果这是您所要求的,那么似乎就像使用 http/https 一样,由开发人员来实施 SSL 加密,这是有道理的。
Sagar Ganatra 也有一个blog entry,介绍了使用 CF 进行 Websocket 身份验证的基础知识。
【讨论】:
以上是关于CF10中websocket认证的密码是如何发送的?的主要内容,如果未能解决你的问题,请参考以下文章