2011-12-26 4 views
0

サーバからの内部プロセスからのメッセージのみを発信し、クライアントに送信し、SignalRの柔軟性のために、XSSが簡単にメッセージ「myhub」を送信できるかどうか心配です。 addMessage "と私が放送したくないゴミを送りなさい。例えば、私はSignalR Hubからのメッセージを聞いているページに50人の人がいます。彼らはGUIを介してメッセージを送信する明示的な方法を持っていませんが、ハーフウィットは簡単に一緒にいくつかのスクリプトをハックし、すべての人が見るためにメッセージを送信し始めることができます。SignalRで読み取り専用のブロードキャストビューを取得する方法

他の言葉でチャットルームを持つようなものですが、人々がメッセージを送信しないようにしたいとします。あなたは彼らに聞きたいだけです。意味がありますか?

+1

signalrを方程式から取り出し、webservice呼び出しのみを使用した場合、あなたは何をしますか? – davidfowl

+0

@dfowlerあなたはこれを作成しました。あなたは "addMessage"が正しいのではないか、XSSできないことを知っていますか?誰かがJavaScriptを使って "addMessage"をやってしまうのを防ぐには、単にビューソースを作成して、それをつかんで、ベースタグをローカルに置いて、そこにスクリプトを入れます。私はいくつかのC#フラグがあるか、それを読み込み専用にするクラスに設定されていることを期待していました。 –

+1

あなたはちょっと私の質問を無視しました。 – davidfowl

答えて

2

ハブからAddMessageメソッドを削除します。

これは本当にそれです。

ウェブからまだ機能が必要な場合は、チェックするために何らかの種類のセキュリティを設定する必要があります。 SingalRにはこれがまだ組み込まれていません。

または、ウェブの外部からしか必要としない場合(サーバーがイベントを公開しているとします)、ハブメソッドの外側がうまくいきます(ページ下部のハブの外部からのハブを介したブロードキャスト: https://github.com/SignalR/SignalR/wiki/Hubs

もう1つの方法は、特定のアクションの開始時に認証を確認することです。あなたはクッキーにアクセスできます。しかし、私はそれを使用しないので、通常のメンバーシップシステムについてはわかりません。あなたはクッキーへのアクセス権を持っているので、ここで私が認証に使用していたパターンです:

public SomeHub : Hub 
{ 
    public void RandomAction() 
    { 
     if(!CheckCookie("Role Required")) 
     { 
      //In here we have what happens when there is 
      // a cookie that is associated with the right Role Required 
     } 
    } 
} 

あなたがCheckCookieのメンバーシップシステムを使用することができるかもしれない、しかし、これは役立つかもしれない:

string CookieName = "Website Authentication"; 
    string vReturn = null; 
    HttpCookie vCookie = null; 
    if(HttpContext.Current.Request.Cookies.AllKeys.Any(t => t == CookieName)) 
     vCookie = HttpContext.Current.Request.Cookies[CookieName]; 
    if(vCookie != null) 
     vReturn = FormsAuthentication.Decrypt(vCookie.Value).Name; 
    return vReturn; 

メンバーシップをクッキー名はそうではありません、それはただのフィラーです。

+0

現在のフレームワークでこれを行うにはどうすればいいのですか?標準的な動作のために他のページにそれを使用したいのですが?コード例は大いに役立ちます。ありがとう。 –

+0

Ewの場合は、フックインするためのセキュリティコードを追加する必要があります。これにはCookieを使用できますが、 "PreAction"コールがないため、それぞれの開始時に "Validate"メソッドを呼び出すことができませんアクション。あなたがASPメンバシップシステムでログインした後に問題のページにアクセスできるようにするだけであれば、それを使用できるはずです。 – Rangoric

+0

私が家に帰ると、サンプルコードが表示されます。私はいくつか持っていると思いますが、メンバーシッププロバイダシステムを使用していませんが、構造はかなり一般的です。 – Rangoric

関連する問題