3

所以,我收到了一个与安全相关的问题。

// Code that was originally sent to client from the server
var hub = $.connection.hubname;        
hub.name = "UserIdFromDataBase";

如果某个恶意用户使用相同的代码编写一个简单的 html 页面,他会收到将发送给原始用户的所有消息吗?

(实际上我想组织注册用户之间的聊天,这就是为什么名称/clientid 应该由服务器端提供)。

谢谢

升级版:

我在项目门户创建了一个相关问题: https ://github.com/SignalR/SignalR/issues/432

4

1 回答 1

3

简短的回答是否定的,但实际上这取决于您的服务器端代码在做什么。

SignalR 将为与集线器的每个连接提供唯一的连接 ID。只要您使用 connectionID 来路由消息,而不是根据客户端提供的值构建自己的路由机制,就可以了。

在您提供的示例中,当用户连接时,他将获得一个唯一的 connectionID。即使第二个用户能够更改客户端代码的值并模仿第一个用户,SignalR 提供的他的 connectionID 也会不同。

有关如何从 https://github.com/SignalR/SignalR/wiki/Hubs调用特定客户端上的方法的示例

public class MyHub : Hub
{
     public void Send(string data)
     {
         // Invoke a method on the calling client
         Caller.addMessage(data);

         // Similar to above, the more verbose way
         Clients[Context.ConnectionId].addMessage(data);
     }
}
于 2012-06-05T22:19:43.380 回答