2016-10-27 3 views
1
私は次のようなコードが含まれている古いJSPアプリケーションに取り組んでいます

ながら:XSSの問題新しいURLにリダイレクトする

<% 
    String ref = request.getParameter("ref"); 
    response.sendRedirect(ref); 
%> 

パラメータrefはURLではっきりと見えると、誰もがそれを編集することができます。 OWASPのセキュリティ基準によれば、このコードはXSS攻撃に対して脆弱です。 OWASP: この脆弱性は、ユーザーを悪意のあるサイトにリダイレクトすることによって、フィッシング詐欺の一部として使用される可能性があります。妥当性チェックが適用されない場合、悪意のあるユーザーはハイパーリンクを作成して、ユーザーを未検証の悪意のあるWebサイトにリダイレクトする可能性があります。

私の場合、これはログアウトページでのみ使用されています。そして、いずれの場合でも、悪意のあるユーザーは、他のユーザーのセッションに対してこのパラメーターを制御することはできません。また、この変数の値はユーザー入力によって制御されていません。

これがまだXSSの脆弱性であるかどうかご意見をお聞かせください。

+0

あなたはrequestDispatcherを使うことができます –

+0

この場合、XSSの問題を取り除く際にどのように役立つか分かりません。とにかく、入力のおかげで、私の質問は、私が言及したシナリオは本当にXSSの脆弱性かどうかですか? –

+0

"いずれの場合でも、悪意のあるユーザーは他のユーザーのセッションでこのパラメーターを制御できません" - 攻撃者がユーザーにリンクを(電子メールなどで)送信しないようにするにはどうすればよいですか? – Quentin

答えて

0

古いブラウザではXSS、すべてのブラウザではHTTP応答分割とオープンリダイレクトの影響を受けます。

response.sendRedirect()Location:ヘッダーを持つ301 http応答を送信します。この方法では、ユーザーは特定のブラウザで特定の操作を実行するjavascriptコードを作成するリンクを作成できますブラウザのエラーページ、リロードのクリックなど)。詳細here(攻撃#4-#8)を参照してください。最近のブラウザではこれはもう動作しないと思います。

しかし、攻撃者がパラメーターに改行文字を挿入できるため、応答ヘッダーをアプリケーション応答に追加できるため、HTTP response splitting(時にはヘッダー挿入)の影響を受けます。

また、open redirectionにもほとんど影響を受けません。攻撃者は、攻撃者が選択した任意のWebサイトに犠牲者のユーザーをリダイレクトするアプリケーションドメインへのリンクを作成することができます。

関連する問題