Closed5

オープンリダイレクトについて

shira79shira79

https://yamory.io/blog/about-open-redirect/

オープンリダイレクト(Open Redirect)攻撃は、リダイレクト処理の実装不備を悪用し、被害者となるユーザを意図しない URL に誘導をする攻撃手法・脆弱性です。

意図しないリダイレクトを発生させるだけですと、大きな問題は起こせないと思われるかもしれませんが、正規ドメインから悪性ドメインへ意図しない誘導を行える場合、フィッシング詐欺などに悪用される可能性があります。

shira79shira79

https://www.stackhawk.com/blog/laravel-open-redirect-security-guide/

public function confirmLogin(Request $request) {
    ...
    if ($email == 'bob' && $password == '1234') {
      ...
      // Append the domain name so it always redirects internally
      $redirectUrl = 'https://mybank.com/' . $request->session()->get('redirect', '/');  
      if (filter_var($redirectUrl, FILTER_VALIDATE_URL) === FALSE) {
        return redirect('/'); // By, default redirect to landing page if the URL is bad
      } 
      return redirect($redirectUrl);
    } else {
    ...
  }

URLが多数ある場合、またはURLに動的コンポーネントがある場合は、このアプローチを使用できます。このアプローチでは、現在のホスト名内にリダイレクトするようにコードを制限します。

shira79shira79

URLが動的で、ホワイトリスト形式の制御ができない場合の確認事項

  • sample.comに対して、sample.com.hogesample.commmmm.hogeに対応できているか。
  • httpsやhttpのみ受け入れる
  • httpsなどがなくても有効なURLである
shira79shira79

Laravelにおいて
Request::getSchemeAndHttpHost()から「スキーマ(httpsなど)://現在のホスト」を取得できる。
Request::getSchemeAndHttpHost()/と指定されたパスを結合すれば、内部リンクになる。

このスクラップは2022/04/27にクローズされました