0

ログインを求める前にアクセスしようとした URL を保持するように、管理者に機能を追加しました。したがって、次の場所に行くと:

/admin/foo/bar?baz

次の場所にリダイレクトされます。

/admin/auth/login

あなたがログインした後、私の機能アドオンの前に、あなたはいつも/admin/user/profile. 今、私/admin/foo/bar?bazはセッション変数に保存します$_SESSION['from'].

login<form>では、非表示の値はセッションの値を取ります:

<input type="hidden" name="from" value="<?php echo htmlspecialchars($_SESSION['from'];)?>">

次に、フォームが送信された後、リダイレクトが行われます。

header('Location: ' . $_POST['from'] );

XSS と htmlspecialchars に関連する他の質問を見て、考えられるすべての XSS 試行を修正できないことを認識していますが、これは「低レベル」の XSS 試行に対して正常に機能しますか?

4

1 に答える 1

0

ここには XSS 攻撃はありませんが、少し古いバージョンの PHP を使用している場合は、HTTP ヘッダー インジェクションにさらされる可能性があり、場合によってはさらに悪化する可能性があります。

返される URL を HTTP リファラーからフェッチしている場合は、 URL を解析し制御するものであることを確認し、リターン パスとクエリ文字列のみを保存することで、十分に保護する必要があります。 . 最終的なリダイレクトを実行するときは、パスのコンポーネントが適切に URL エンコードされていることを確認する必要があります。ログイン中に操作する可能性があるユーザーにパントバックする代わりに、戻り URL をセッションに完全に保存できます。

于 2011-03-14T00:08:24.953 に答える