Безопасность SignalR

Я новичок в SignalR, но мне было любопытно, насколько это безопасно.

Например, я создаю следующий метод для отправки сообщения всем пользователям следующим образом:

public class NotificationHub : Hub
{
    public void Send(string message)
    {
        Clients.All.broadcastMessage(message);
    }
}

SignalR генерирует следующий метод в файле js (hubs):

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

Итак, не мог ли любой пользователь в мире просто скопировать и вставить его в свою консоль и отправить сообщение по своему выбору всем моим пользователям без моего ответа?

var notifications = $.connection.notificationHub;
notifications.server.send("Your site has been hacked!");

Я просто попробовал это, и он работает - так, как я могу запретить моим пользователям отправлять несанкционированные сообщения с клиентской стороны?

Ответ 1

Это конечная точка HTTP, как и любая другая. Если вы хотите ограничить доступ к нему, вам необходимо пройти аутентификацию пользователей и разрешить их действия. Вы выполняете аутентификацию с использованием стандартных методов веб-аутентификации (формы auth, cookies, Windows auth и т.д.), И вы можете авторизовать код, используя конструкции SignalR (например, атрибут Authorize, который вы указываете) или свой собственный код.

Все это задокументировано: http://www.asp.net/signalr/overview/signalr-20/security/introduction-to-security