【发布时间】:2012-07-26 14:19:21
【问题描述】:
在 SignalR Hub 类中,您可以为用户调用 Context.ConnectionId。我希望将这些存储在Dictionary<string, string> 中,以便将用户连接在一起。将其他用户的 clientid 返回给用户的客户端是否存在风险或安全漏洞?
【问题讨论】:
在 SignalR Hub 类中,您可以为用户调用 Context.ConnectionId。我希望将这些存储在Dictionary<string, string> 中,以便将用户连接在一起。将其他用户的 clientid 返回给用户的客户端是否存在风险或安全漏洞?
【问题讨论】:
是的,我们在一些示例中这样做了,但这很糟糕。如果您泄露了连接 ID,那么人们可以在您的连接上发送/接收您的消息。创建另一个唯一的 id 并在内部存储您的 id 和连接 id 之间的映射,以便您可以将它们映射回来。
这与表单身份验证票的想法基本相同。当然它是加密的,但如果有人得到它,他们无论如何都可以冒充你。
在 MessengR 中查看此逻辑的示例。 https://github.com/davidfowl/MessengR/blob/master/MessengR/Hubs/Chat.cs#L67
【讨论】: