0

次のフィルタ チェーンがあるとします。

フィルター 1 ====> フィルター 2 ====> フィルター 3 ====> カスタム フィルター ====> フィルター 4 ====> フィルター 5

<====フィルター 1<====フィルター 2 <==== カスタム フィルター <====フィルター 3<====フィルター 4 <==== フィルター 5

カスタマイズされたデータ構造を注入しています ^

問題は、「ソースの表示」を行ったときに、Web ブラウザーに挿入されたデータが表示されないことです。

したがって、フィルター 1 または 2 のいずれかが挿入されたデータを削除していることは明らかです。実際にはもっと多くのフィルターがあります (おそらく 30 以上)。注入されたデータを削除する元凶のフィルターがどのフィルターであるかを特定しようとしています。

変更できないHttpServletResponseにデータを書き込む方法はありますか?変更を試みた場合、Javaで例外がスローされますか? このように、すぐに犯人が明らかになります。

コードが既にリリースされているオブジェクトにアクセスしようとしている時期を判断しようとしているときに、Objective-C でゾンビを有効にするようなものです。

いくつかの詳細(興味がある場合):

httpservletresponse に挿入するデータ構造は、「スクリプト」タグで囲まれた JSON データ構造です。これは、jQuery を使用してユーザー インターフェイス関連の一連のものを解析するためです。

興味深いことに、「hello stackoverflow」のようなランダムな文字列を挿入しようとすると、Web ブラウザで「ソースを表示」すると、この文字列が表示されます。したがって、私たちの推測では、構造を取り除くフィルタが何であれ、悪意のあるスクリプトを探して、私たちのものを引き出している可能性があります。

4

1 に答える 1

1

もちろん; 読み取り専用の応答ラッパーを作成し、それを使用してフィルター チェーンを継続できます。

些細な応答ラッパーの例(それはあなたが望むことをするのではなく、方法を示すだけです。)

コーディングをせずに既存のフィルターの「間に」応答をダンプでき、構成だけで済む場合、これが最も簡単な方法であるとは確信していません。

于 2012-06-07T16:40:44.507 に答える