2011-09-16 16 views
10

私はどのように私のsocket.io接続をサーバーから保護することができたのだろうか。Socket.ioセキュリティの問題

セキュリティ問題:

  • 何がクライアント側のコード経由でソケットサーバーに接続しているから、悪意のあるユーザーを止めるでしょうか?

例:

OUTSIDE DOMAIN REQUEST var socket = io.connect('http://Mydomain', {port: 4000}); 
  • ユーザーは、一見ちょうど別のブラウザウィンドウを開くことによって、同時接続の数千を作成することができます。

どうすればこれらの問題を防ぐことができますか?

+0

外観とユーザーのアドレス(IP)を検査し、 socket.handshake経由のヘッダー要求またはグローバル認証 –

答えて

5

サーバーのHTTPリファラーが正しいかどうかを確認できます。 http参照とハンドシェイクの両方に関する情報については、socket.io仕様をチェックしてください。

https://github.com/socketio/socket.io-protocol

また0.8は、参照元の検証を持っています。 haventは前にそれを使用するが、これは見て開始する場所である可能性がありますhttps://github.com/LearnBoost/socket.io/wiki/Authorizingで

https://github.com/LearnBoost/socket.io/pull/481

+0

ありがとうございます。同じユーザーから複数の接続がある場合はどうなりますか? – Trevor

0

あなたの(本当の)クライアントがよく知っている場所から来ている場合は、ファイアウォールレベルで他のすべてのユーザーをブロックすることをお勧めします。あなたのサービスが全員に利用可能であると仮定すると、おそらくクライアントとサーバーのハンドシェイクのメカニズムを調べることができます。