Любой риск, возвращающий другого пользователя идентификатор подключения к клиенту?

В классе SignalR Hub вы можете вызвать Context.ConnectionId для пользователя. Я хочу сохранить их в Dictionary<string, string>, чтобы подключить пользователей. Есть ли риск или уязвимости безопасности при возврате других пользовательских клиентских имен клиентскому клиенту?

Ответы

Ответ 1

Да, мы делаем это в некоторых наших образцах, но это плохо. Если вы пропустите идентификатор соединения, люди смогут отправлять и получать ваши сообщения в вашем соединении. Создайте другой уникальный идентификатор и сохраните сопоставление между вашим id и идентификатором соединения внутри, чтобы вы могли отобразить их обратно.

Это в основном та же идея, что и форма auth ticket. Конечно, он зашифрован, но если кто-то получит его, они могут выдать себя за вас независимо.

См. образец этой логики в MessengR. https://github.com/davidfowl/MessengR/blob/master/MessengR/Hubs/Chat.cs#L67