3

それで、セキュリティ関連の質問がありました。

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

悪意のあるユーザーが同じコードで単純な html ページを作成した場合、元のユーザーに送信されるすべてのメッセージを受信するでしょうか?

(実際には、登録ユーザー間のチャットを整理したいので、サーバー側で名前/クライアント ID を提供する必要があります)。

ありがとう

更新:

プロジェクト ポータルで関連する問題を作成しました: https://github.com/SignalR/SignalR/issues/432

4

1 に答える 1

3

短い答えはノーですが、実際にはサーバー側のコードが何をしているかによって異なります。

SignalR は、ハブへのすべての接続に対して一意の connectionID を提供します。connectionID を使用してメッセージをルーティングし、クライアントから提供された値に基づいて独自のルーティング メカニズムを構築しない限り、問題はありません。

あなたが提供する例では、ユーザーが接続すると、一意の接続IDが取得されます。2 番目のユーザーがクライアント側コードの値を変更して最初のユーザーを模倣することができても、SignalR によって提供される接続 ID は異なります。

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 に答える