SignalR安全

use*_*388 11 c# asp.net-mvc signalr

我是SignalR的新手,但我很好奇它是多么安全.

例如,我创建了以下方法来向所有用户发送消息,如下所示:

public class NotificationHub : Hub
{
    public void Send(string message)
    {
        Clients.All.broadcastMessage(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

SignalR在js文件(集线器)中生成以下方法:

proxies.notificationHub.server = {
    send: function (message) {
        return proxies.notificationHub.invoke.apply(proxies.notificationHub, $.merge(["Send"], $.makeArray(arguments)));
     }
};
Run Code Online (Sandbox Code Playgroud)

那么,世界上的任何用户都不能将其复制并粘贴到他们的控制台中,并且在没有我说出的情况下向所有用户发送他们选择的消息?

var notifications = $.connection.notificationHub;
notifications.server.send("Your site has been hacked!");
Run Code Online (Sandbox Code Playgroud)

我只是尝试了这个并且它有效 - 所以,我怎样才能阻止我的用户从客户端发送未经授权的消息?

Dam*_*rds 11

它是一个像任何其他人一样的HTTP端点.如果要限制对其的访问,则需要对用户进行身份验证并授权其操作.您使用标准Web身份验证方法(表单身份验证,Cookie,Windows身份验证等)进行身份验证,您可以使用SignalR构造(如您指出的Authorize属性)或使用您自己的代码在代码中进行身份验证.

这些都记录在案:http://www.asp.net/signalr/overview/signalr-20/security/introduction-to-security