3

信頼できないクライアント接続に直面して WebSocket サーバーをテストしようとしています。

終了フレームや TCP FIN ハンドシェイクを送信せずに、いつでもクライアント側で単一の WebSocket 接続を強制的にドロップできるようにしたいと考えています。タブが閉じられると、ブラウザーは各 WebSocket を適切にシャットダウンするため、ブラウザー自体はこれを行うことができません (そうですか?)。同じホスト (他のブラウザー ウィンドウの私) からの他の WebSocket 接続は影響を受けません。

私のシステムは Ubuntu Linux 12.04 です。私のブラウザーは Chrome です (ただし、これをテストするために WebSocket 互換のブラウザーに切り替えることができます)。

サーバーは Ruby と em-websocket を使用しています。

私が検討したオプション:

  • killall -9 $pid_of_tabしかし、それは少し失礼です。カーネルはまだ TCP 接続を閉じているようです。
  • iptablesファイアウォール ルールを使用できますが、これにはルートが必要です。他の接続を維持しながら、(localhost からの) 1 つの接続だけをドロップするのは困難です。
  • 別のマシンから接続してから、ネットワーク ケーブルを抜くか、wifi を無効にする

最後の 2 つは機能しますが、もっと簡単な方法が必要なようです。何か案は?

4

2 に答える 2

1

FiddlerまたはWebScarabを使用すると、これを非常に簡単に行うことができると思います

于 2012-07-16T16:32:23.057 に答える
0

バージョンは次のiptablesとおりです (ソケットが localhost、ポート 3000 で提供されていると仮定):

すべてのトラフィックをドロップするルールを追加するには:

$ sudo iptables -A INPUT -i lo -p tcp --dport 3000 -j DROP

そのルールを再度削除するには:

$ sudo iptables -D INPUT -i lo -p tcp --dport 3000 -j DROP
于 2012-07-14T12:32:08.043 に答える