3

CreateConnectionId次のようなsignalRハブクラスのを拡張するための多くの例を見てきました。

http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/

ログイン時にユーザーを保存してから、オンデマンドでデータをプッシュする

しかし、各ユーザーのconnection_idを彼のUserIdに変更すると(標準のaspメンバーシッププロバイダーをそのまま使用していることに注意してください)、セキュリティ上の脅威が発生しますか?これを行うと、ユーザーからconnection_idへの内部マッピングを保持する必要がなくなるので、どのようにすればよいかがわかりましたが、ユーザーのブラウザーのCookieに保存すると、セキュリティ上の脅威になる可能性があると考えました。

4

2 に答える 2

3

いいえ、安全ではなく、最終的に SignalR が壊れます。

その理由は、たとえばユーザーのデータベース ID を使用して Cookie に保存すると、ブラウザーで 2 番目のタブを開くと同じ接続 ID が生成されるためです (同じ Cookie がサーバーに送信されるため)。

これは明らかに悪いことであり、参照した記事には記載されていない 2 つのタブまたはブラウザー ウィンドウを開くとすぐに SignalR が壊れます。さらに、Icarus が説明したように、Cookie を変更して他のユーザーのメッセージを受信する可能性があります。

これを行うためのより良い方法は次のとおりです。デフォルトの GUID 接続 ID ジェネレーターを保持し、代わりに、接続を開始した後、独自の ID (データベース ID または電子メール アドレスなど) で識別されるグループに接続を追加します。この方法で呼び出すことができClients[emailAddress].doSomething()、このユーザーの開いているすべてのタブにブロードキャストします。

于 2012-08-08T18:50:59.630 に答える
0

私は答えを冒険して、はい、これは悪い考えのように見えます.Cookieは簡単に操作でき、ユーザーはそれを他のランダムIDに変更して、意図しないメッセージ/データを受信し始める可能性があるため.

于 2012-08-08T17:31:42.537 に答える