概要
wp_sanitize_redirect
関数は、URLの文字列をサニタイズするための関数です。この関数は、リダイレクトを行う際に、脆弱性を避けるためにURLを安全な形式に変換するために使用されます。主に以下のようなシナリオで使われます。
- 不正なデータによるリダイレクト攻撃を防ぐ場合
- URLを正しい形式に整形する場合
- URLに埋め込まれた空白や特殊文字を処理する場合
- プラグインやテーマのリダイレクト機能を実装する場合
- フィルターフックと組み合わせて、独自のリダイレクト処理を行う場合
- ユーザーの入力したURLを安全にハンドリングする場合
- 不正なスキーム(例: javascript:)を排除する場合
- SSL/HTTPSリダイレクトを実施する場合
構文
wp_sanitize_redirect( string $location )
パラメータ
$location
: サニタイズするURL文字列。
戻り値
- サニタイズされたURL文字列。
関連する関数
使用可能なバージョン
- WordPress 4.4.0以降
コアファイルのパス
wp-includes/pluggable.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | 〇 |
get_header | |
wp_head |
サンプルコード
-
基本的なURLのサニタイズ
$unsafe_url = "http://example.com/?param=<script>alert('xss');</script>"; $safe_url = wp_sanitize_redirect($unsafe_url); // $safe_urlは "http://example.com/?param=" になります
説明: ユーザーが悪意のあるスクリプトを埋め込んだURLをサニタイズし、安全なURLに変換します。
-
リダイレクトURLの設定
$redirect_url = "http://example.com/some-page/"; wp_redirect(wp_sanitize_redirect($redirect_url)); exit;
説明: 安全なURLを生成し、そのURLにリダイレクトします。
-
URLエンコーディングの処理
$input_url = "http://example.com/search?query=normal query"; $sanitized_url = wp_sanitize_redirect($input_url); // 空白はエンコードされます
説明: 入力されたURLの空白をエンコードし、安全な形式にします。
-
不正なスキームの排除
$malicious_url = "javascript:alert('xss')"; $sanitized_url = wp_sanitize_redirect($malicious_url); // $sanitized_urlは空の文字列になる
説明: 不正なJavaScriptスキームを含むURLを処理し、安全でないため空の文字列が戻ります。
-
HTTPSへの強制リダイレクト
$http_url = "http://example.com/non-secure-page"; $redirect_url = wp_sanitize_redirect(str_replace("http://", "https://", $http_url)); wp_redirect($redirect_url); exit;
説明: HTTP URLをHTTPSに変換し、サニタイズ後にリダイレクトします。