私は自分のレスポンスヘッダにユーザ定義のパラメータを直接渡しています。私が学んだことは、ユーザーがヘッダーを操作でき、クロスサイトスクリプティング攻撃や他の種類の複数の攻撃につながる可能性があるので、良い考えではありません。応答ヘッダの検証(
https://www.fortify.com/vulncat/en/vulncat/python/header_manipulation.html
私はこれを防止するためにやっていることは「\ rを」と空の文字列と「\ nの」文字「を」置き換えることにより、「HTTPレスポンス分割」のためのユーザー入力を検証しています。これで十分か、他の文字もチェックする必要があります。どのポインタも大きな助けになるでしょう。
これは私のコードです。
if(response != null)
{
newResponse = response.replaceAll("[\r\n]", "");
}
このような種類の攻撃を防止するには十分ですか、他の文字についても検証する必要があります。
+1ホワイトリスト。 *が許可されている文字を指定してください。すべての可能性のある攻撃ベクトルと悪用シナリオの完全な知識を持っていると仮定しないでください。可能性のあるすべての悪意のある文字列を列挙したり、許可したりすることはできません。特にユニコードの世界、あるいは不正な形式のユニコードのコードポイントの世界では、あなたが考えなかったものが常に存在します。 – Cheekysoft
はい、ホワイトリストは良いアプローチです。私は応答にファイル名を渡しています。 正規表現をに変更しました。 if(response!= null) { newResponse = response.replaceAll( "[^ \\\\ _a-zA-Z0-9-./]"、 ""); } @artbristolご協力いただきありがとうございます。 –