このエクスプロイトの可能性を処理しようとしていますが、最善の方法は何でしょうか? apache の common-validator を使用して、既知の許可されたシンボルのリストを作成し、それを使用する必要がありますか?
3 に答える
ウィキペディアの記事から:
一般的な解決策は、Location や Set-Cookie などの HTTP ヘッダーに含める前に文字列を URL エンコードすることです。
サニタイズの典型的な例には、整数へのキャストや積極的な正規表現の置換が含まれます。これは PHP 固有の問題ではありませんが、バージョン 4.4.2 および 5.1.2 以降、PHP インタープリターにはこの攻撃に対する保護が含まれていることに注意してください。
編集
私はJavaアクションでjspを使用することに縛られています!
この攻撃ベクトルに対する JSP ベースの保護はないようです。Web 上の多くの説明では、asp または php を想定していますが、このリンクでは、プラットフォームに中立な方法で問題に対処する方法が説明されています (jsp は偶発的な例として使用されています)。 )。
基本的に、最初のステップは潜在的に危険な文字 (CR、LF など) を特定し、それらを削除することです。残念ながら、これはあなたが期待できるほど堅牢なソリューションです!
解決
入力を検証します。特に Cookie を設定してリダイレクトする場合は、HTTP 応答ヘッダーにデータを埋め込む前に、CR と LF (およびその他すべての危険な文字) を削除してください。サード パーティ製品を使用して CR/LF インジェクションを防御し、アプリケーションの展開前にそのようなセキュリティ ホールの存在をテストすることができます。
PHP を使用しますか? ;)
ウィキペディアと PHP CHANGELOG によると、PHP は 4.4.2 以降の PHP4 と 5.1.2 以降の PHP5 で保護されていました。
ざっと目を通しただけですが、これは役立つかもしれません。彼の例は JSP で書かれています。
わかりました、文字列を読み取るときにintにキャストすることはあまり役に立ちません。また、ブラウザから入力を受け取るすべてのアクションで正規表現を使用すると、面倒になる可能性があります。より堅牢なソリューションを探しています