Безопасность 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