2012-04-24 19 views
3

私は自分のレスポンスヘッダにユーザ定義のパラメータを直接渡しています。私が学んだことは、ユーザーがヘッダーを操作でき、クロスサイトスクリプティング攻撃や他の種類の複数の攻撃につながる可能性があるので、良い考えではありません。応答ヘッダの検証(

https://www.fortify.com/vulncat/en/vulncat/python/header_manipulation.html

私はこれを防止するためにやっていることは「\ rを」と空の文字列と「\ nの」文字「を」置き換えることにより、「HTTPレスポンス分割」のためのユーザー入力を検証しています。これで十分か、他の文字もチェックする必要があります。どのポインタも大きな助けになるでしょう。

これは私のコードです。

if(response != null) 
    { 
    newResponse = response.replaceAll("[\r\n]", ""); 
    } 

このような種類の攻撃を防止するには十分ですか、他の文字についても検証する必要があります。

答えて

3

ホワイトリストはブラックリストよりもはるかに安全です。ホワイトリストを使用できるかどうかは、ユーザー定義のパラメータについてどれだけ知っているかによって異なります。

ここ

より:

http://cwe.mitre.org/data/definitions/113.html

+0

+1ホワイトリスト。 *が許可されている文字を指定してください。すべての可能性のある攻撃ベクトルと悪用シナリオの完全な知識を持っていると仮定しないでください。可能性のあるすべての悪意のある文字列を列挙したり、許可したりすることはできません。特にユニコードの世界、あるいは不正な形式のユニコードのコードポイントの世界では、あなたが考えなかったものが常に存在します。 – Cheekysoft

+0

はい、ホワイトリストは良いアプローチです。私は応答にファイル名を渡しています。 正規表現をに変更しました。 if(response!= null) { newResponse = response.replaceAll( "[^ \\\\ _a-zA-Z0-9-./]"、 ""); } @artbristolご協力いただきありがとうございます。 –

0

あなたの情報は、適切な回答のために不十分です。あなたの行動が十分であるかどうか、そしてあなたのコードがどのような環境で実行されているかを知るためには、パラメータ値を使って何をするかを知る必要があります。100%正しい(しかしかなり役に立たない)答えは、いいえ。 "

セキュリティは、元のコンテキストの外で撮影された簡単な箇条書きに従うことで実装されません。あなたはPythonのコンテキストからそれを取り出し、Javaコンテキストに直接配置しました。あなたの環境とコードが完全に何をしているのかを理解しなければなりません。銀色の弾丸はありません。

+0

質問の一部を誤解ので、無関係なコメントを削除しました。 – Torben

+0

そこにフレッドブルックスへのいい言及... – SyntaxRules

関連する問題