11

わかりました、これはまったく奇妙です。COMET を使用して長時間保持された HTTP 接続に依存する Web アプリケーションを構築しており、これを使用してサーバーからアプリケーションにデータをストリーミングしています。

問題は、一部のウイルス対策プログラムではうまく機能しないように見えることです。現在ベータ版であり、一部のユーザーは、ウイルス対策が有効になっているときにアプリケーションの問題に直面しています. 1 つの特定のアンチウイルスだけではありません.. オンラインで調べたところ、Avast のこの回避策を見つけました: http://avricot.com/blog/index.php?post/2009/05/20/Comet-and-ajax -with-Avast-s-shield-web-:-救いか否か

ただし、これを処理する方法について何か提案がある人はいますか? これらのセキュリティ プログラムを喜ばせるには、特定のヘッダーを送信する必要がありますか?

4

5 に答える 5

7

これは難しいものです。これを引き起こす一種のアンチウイルス機能は、ブラウザで実行されている悪意のあるコードが個人データをリモートサーバーにアップロードするのを防ごうとします。これを行うために、アンチウイルスは、ネットワークに到達する前にすべての発信トラフィックをバッファリングし、事前定義された文字列をスキャンしようとします。

これは、アプリケーションがソケットで完全なHTTPリクエストを送信するときに機能します。これは、アンチウイルスがHTTPリクエストの終了を確認し、スキャンを停止してデータを送信できることを認識しているためです。

あなたの場合、おそらく長さフィールドのないヘッダーだけがあるので、アンチウイルスのバッファを満たすのに十分なデータを送信するまで、ネットワークには何も書き込まれません。

それがその特定の機能をオフにする正当な理由ではない場合、私は何であるかわかりません。私はAVastとMcAfeeでこれに遭遇しました-この時点で、他のアンチウイルス業界はおそらくそのようなことをしています。具体的には、マカフィーの個人情報保護機能でこれに遭遇しました。これは、私が知る限り、バグが多すぎて使用できません。

可能であれば、ソケットでデータを送信し続けるか、長さフィールドを持つHTTPメッセージでデータを送信してください。私はこれをいくつかのアンチウイルスベンダーに報告してみました。私の知る限り、そのうちの1つは修正し、もう1つは修正しませんでした。

もちろん、この種の機能はまったく役に立ちません。悪意のあるアプリケーションがそれを回避するために行う必要があるのは、データを送信する前にデータをROT13することだけです。

于 2010-04-15T05:48:41.093 に答える
3

http の代わりに https を使用してみてください。https をインターセプトするスキャナーもありますが、あまり一般的ではなく、前回チェックしたときはデフォルトでオフになっていました。また、アクティブ化すると Firefox の SSL 接続が切断されたので、アクティブ化する人はほとんどいないと思います。ベンダーは機能を無効にすることを願っています。

于 2010-04-17T23:18:25.507 に答える
0

Web リクエストに標準以外のポートを使用する場合、これを回避できる可能性があります。他にも多くの問題があります。つまり、多くのブラウザでクロスドメインと見なされます。ここで提供するより良い提案があるかどうかはわかりません。これは、AV プログラムが特定のポートのトラフィックを傍受する方法に大きく依存します。

于 2010-03-08T23:59:44.140 に答える
0

接続を切断して再接続することを余儀なくされると思います。停止状況で接続がダウンした場合、コードは何をしますか? かつて、ファイアウォールで同様の問題が発生しました。コードは切断を検出してから再接続する必要がありました。データ転送の分割に関する回答が気に入っています。

于 2010-04-17T09:08:46.643 に答える
0

問題は、一部のファイルを順番にスキャンできないことです。前の部分に悪意があるかどうかを判断するには、後の部分が必要です。

そのため、スキャナーはデータをストリーミングしているチャネルに問題があります。あなたのデータ ストリームがクリーンなファイル タイプとして認識されるとは思えないため、スキャナは可能な限りデータをスキャンしようとしています。その過程でストリームが停止していると思います。

私が提案できる唯一の考えは、小さなトランザクションでデータ転送を行い、COMET 接続を通知のみに使用することです (1 回の通知後に各チャネルを閉じます)。

于 2010-02-28T21:13:17.160 に答える