記事ディレクトリ
1. URLリダイレクト
安全でない URL ジャンプ
URL アドレス ジャンプが実行される場所では、安全でない URL ジャンプの問題が発生する可能性があります。
バックエンドが、フロントエンドから渡されたパラメータ (おそらく、ユーザーから渡されたパラメータ、またはフロントエンド ページに以前に埋め込まれていた URL アドレス) をジャンプ先として使用し、何も判断されなかった場合、「ジャンプ」間違ったオブジェクトへ」という
問題が発生する可能性があります。
つまり、安全でない URL ジャンプの脆弱性とは、Web アプリケーション内のジャンプ先 URL として未検証のユーザー入力が存在する状況を指します。攻撃者はこの脆弱性を悪用して、ユーザーを悪意のある Web サイトにリダイレクトしたり、その他の悪意のあるアクションを実行したりする可能性があります。
ページ上のリンクアドレスを順番にクリックしてください
4番目をクリックすると、パスが変更されたことがわかりました。
url の値を Baidu のリンク アドレスに変更してみてください。
ジャンプが成功したことがわかりました
1.1 ソースコード分析
変更前は、urlパラメータの値がi以外の場合、url値で表されるページにジャンプします。
1.2 脆弱性の防御
変更後は、url の値が unsafere.php の場合は unsafere.php にジャンプし、url の値が i または unsafere.php でない場合は現在のページに留まり、プロンプト メッセージが表示されます。
ページには次のように結果が表示されます。
URL リダイレクトの脆弱性を防ぐ方法:
-
ユーザー入力を検証する: ユーザー入力を受け取るすべてのパラメーターが正当であるかどうかを検証する必要があります。検証方法には、正規の URL かどうかの確認、ドメイン名がホワイトリストに含まれているかどうかの確認などが含まれます。
-
直接 URL リダイレクトの使用を避ける: リダイレクトの入力パラメーターで指定された URL アドレスの使用は避けてください。中間変換リンク (このサイト ジャンプの使用など) を使用して URL をリダイレクトできます。
-
ホワイトリスト フィルタリングを使用する: リダイレクトが許可される URL アドレスを制限するホワイトリストを維持すると、攻撃者が悪用できるリダイレクト アドレスを効果的に制限できます。
-
固定リダイレクト URL を使用する: コードを記述するときは、ユーザーが URL アドレスを入力することによってリダイレクト操作がトリガーされないように、固定リダイレクト URL アドレスを設定するか、事前定義された URL アドレス パラメーターを設定します。
-
リダイレクトの数を制限する: リダイレクトの最大数を設定し、事前設定値を超えた場合はリダイレクトを終了します。これにより、攻撃者がハニーポット攻撃と同様のリンクを構築し、ユーザーのブラウザに常にジャンプしてユーザーのブラウザをクラッシュさせることを防ぐことができます。
-
セキュリティ フラグを使用したリダイレクト: URL で SSL 証明書を使用したり、現在のセッション情報を渡すためのパラメータを追加したりするなど、セキュリティ フラグを使用すると、リダイレクトのセキュリティを強化できます。