2012-06-05 4 views
3

그래서 보안 관련 질문이 있습니다.SignalR 보안 메시지 전달

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

일부 악의적 인 사용자가 동일한 코드로 간단한 html 페이지를 작성하면 원래 사용자에게 보낼 모든 메시지를 받게됩니까?

(사실 저는 등록 된 사용자 간의 채팅을 구성하기 때문에 name/clientid가 서버 측에서 제공되어야합니다.)

감사

UPD

:

내가 프로젝트 포털에서 관련 문제를 만들어 : https://github.com/SignalR/SignalR/issues/432

답변

3

짧은 대답이 '아니오',하지만 정말 무엇인지에 따라 달라집니다 서버 측 코드가 수행 중입니다.

SignalR은 허브에 연결할 때마다 고유 한 connectionID를 제공합니다. 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); 
     } 
} 
에서 특정 클라이언트에 메소드를 호출하는 방법에 대한