0

Web アプリケーションへの入力からいくつかの一般的な XSS 攻撃を取り除く検証ライブラリを使用しています。それは正常に動作し、XSS 攻撃から保護するためにレンダリングするすべてをエスケープしています。

ライブラリには、XSS フィルタリング プロセスの一部として次の行が含まれています。

// Protect query string variables in URLs => 901119URL5918AMP18930PROTECT8198
str = str.replace(/\&([a-z\_0-9]+)\=([a-z\_0-9]+)/i, xss_hash() + '$1=$2');

xss_hashランダムな英数字の文字列を返します。基本的に、クエリ文字列を含む URL を受け取り、それを少しマングルします。

> xss('http://example.com?something=123&somethingElse=456&foo=bar')
'http://example.com?something=123eujdfnjsdhsomethingElse=456&foo=bar'

バグがあることに加えて (すべてではなく 1 つのパラメーターのみを「保護」します)、全体がバグのように思えます。

私の質問は次のとおりです。この種の代替品は、どのような種類の攻撃ベクトルから保護されていますか?

本当に何もしていない場合は、プロジェクトにパッチを提出して完全に削除したいと思います。ライブラリのユーザーを合法的に保護しているのであれば、既存のバグを修正するパッチを提出したいと思います。

4

2 に答える 2

1

xss_hashランダムな英数字の文字列を返します。

それらは間違いなくランダムですか、それとも計算可能なデータに基づいて生成されたものですか?

あいまいさによるセキュリティのようです。クエリが読みにくくなるように、すべて&のを に置き換えようとしています。xss_hash()これを元に戻すライブラリの一部があると思います (つまり、解析目的でxss_hash()文字列内のすべての 's を s として扱います)。&

于 2012-06-16T17:52:41.060 に答える
0

&問題のコードは、アンパサンドを削除またはマングルする他の処理を行う前に、区切り URL パラメーターをランダムな文字列に置き換えることで「クエリ文字列変数を保護」していました。Jay Shah が指摘したように、クエリ文字列のアンパサンドを置き換えるためのコードがすぐ下にありましたが、別のバグが意図したとおりに機能していませんでした。

于 2012-06-27T19:48:36.267 に答える