看起来SignalR使用GUID作为客户端的连接ID
虽然可以修改行为,但默认情况下框架将使用GUID:
我们被告知如果一个人可以猜出另一个客户的连接ID,那么他们就可以冒充他们了。
您永远不应该将一个客户端的连接ID传递给其他客户端 恶意用户可以使用它来模仿来自该客户端的请求。
这些连接ID GUID是加密安全/随机的吗?如果不是,它看起来像是一个(非常明显的)安全漏洞。
答案 0 :(得分:0)
我认为客户端必须始终将其标识符发送到服务器。使其更安全的一个好方法可能是使用WSS而不是WS来代替websocket和Https,而不是使用http作为后备。
有意义吗?
答案 1 :(得分:0)
根据signalr documentation,连接ID作为加密的连接令牌的一部分发送。他们使用DPAPI数据保护进行加密。因此,不需要安全地生成连接ID并aren't。 关于安全性的信号器文档(与上面相同)表明它们不应该被共享这一事实也让我感到困惑。
由于连接ID是验证过程的一部分,因此您不应向其他用户显示一个用户的连接ID,也不应将该值存储在客户端上,例如cookie中。
不知道该怎么做。根据代码,共享连接ID应该是安全的,因为令牌是加密的。您可以在生成id的同一个类中看到加密/解密/检查(第二个链接)。