2

このstackoverflowの質問に出くわし、その質問からこの記事に行きました。

私が理解していることから、暗号化された/暗号化されていない Websocket 接続の両方は、適切なヘッダーを介して送信するプロキシ サーバーに依存しています。

暗号化されていない websocket 接続に関する記事から

暗号化されていない WebSocket トラフィックが WebSocket サーバーに向かう途中で透過プロキシを通過する場合、この場合ブラウザーは CONNECT メソッドを発行しないため、接続は実際には失敗する可能性があります。プロキシ サーバーが要求を >(WebSocket) サーバーに転送する場合、Connection >header を含む特定のヘッダーを取り除くことが期待されます。したがって、正常に動作する透過プロキシ サーバーは、WebSocket の >upgrade >handshake をほぼ即座に失敗させます。すべてのプロキシ サーバーが、予想されるプロキシの動作に関する HTTP 標準に準拠しているわけではありません。たとえば、一部のプロキシ サーバーは、Connection: Upgrade ヘッダーを削除せずに WebSocket サーバーに渡すように構成されており、WebSocket サーバーは 101 Web Socket Protocol ハンドシェイク応答を送信します。クライアントまたはサーバーが最初の WebSocket フレームの送信を開始すると、問題が発生します。フレームは、プロキシ サーバーが期待するもの (通常の HTTP トラフィックなど) に似ていないため、プロキシ サーバーが WebSocket トラフィックを処理するように特別に構成されていない限り、何らかの例外が発生する可能性があります。

暗号化された Web ソケット接続について

透過プロキシ サーバーの場合、ブラウザはプロキシ サーバーを認識しないため、HTTP CONNECT メソッドは送信されません。ただし、ワイヤ トラフィックは暗号化されているため、中間の透過的なプロキシ サーバーは暗号化されたトラフィックの通過を許可する可能性があるため、Web ソケット セキュアを使用すると、WebSocket 接続が成功する可能性がはるかに高くなります。

暗号化されていない接続が失敗することが予想され、暗号化された接続が成功する可能性が高い場合、どのように機能しますか?!!

私はおそらくこの全体が間違っている可能性がありますが、これがどのように機能するかを理解したいと思っています.

4

2 に答える 2

3

暗号化された接続では、プロキシは HTTP コンテンツを認識しないため、単にメッセージを通過させます。ただし、暗号化されていない接続では、HTTP メッセージ (ヘッダーなど) がプロキシによって検査および変更される場合があります (場合によっては)。メッセージ (例: HTTP ヘッダーなし)。

于 2012-07-03T20:10:55.090 に答える
1

あなたが参照している記事は、これらの問題を解決するように設計された製品を製造している会社で働いている人によって書かれたものであることは注目に値します. そのため、著者が問題の範囲を誇張するインセンティブがある可能性があります。

たとえば、著者は次のように述べています。

[透過プロキシ] は、接続ヘッダーを含む特定のヘッダーを削除することが期待されています

本当じゃない。RFC2616 によると:

「トランスペアレント プロキシ」とは、プロキシの認証と識別に必要な範囲を超えて要求または応答を変更しないプロキシです。

もちろん、多くのプロキシは RFC を厳密には守っていないため、暗号化された接続を使用することをお勧めします。

TLS 暗号化は、中間サーバーがトラフィックに干渉するのを防ぐように特別に設計されています。中間プロキシ サーバーが安全な WebSockets 接続で問題を引き起こしている場合は、インターネット バンキングとの接続など、他の安全なトラフィックも妨害する可能性があるため、より大きな問題が発生している可能性があります。

于 2014-03-26T12:29:40.060 に答える