ワードプレスのwp_sanitize_redirect関数の使用方法・解説

概要

wp_sanitize_redirect関数は、URLの文字列をサニタイズするための関数です。この関数は、リダイレクトを行う際に、脆弱性を避けるためにURLを安全な形式に変換するために使用されます。主に以下のようなシナリオで使われます。

  1. 不正なデータによるリダイレクト攻撃を防ぐ場合
  2. URLを正しい形式に整形する場合
  3. URLに埋め込まれた空白や特殊文字を処理する場合
  4. プラグインやテーマのリダイレクト機能を実装する場合
  5. フィルターフックと組み合わせて、独自のリダイレクト処理を行う場合
  6. ユーザーの入力したURLを安全にハンドリングする場合
  7. 不正なスキーム(例: javascript:)を排除する場合
  8. 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

サンプルコード

  1. 基本的な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に変換します。

  2. リダイレクトURLの設定

    $redirect_url = "http://example.com/some-page/";
    wp_redirect(wp_sanitize_redirect($redirect_url));
    exit;
    

    説明: 安全なURLを生成し、そのURLにリダイレクトします。

  3. URLエンコーディングの処理

    $input_url = "http://example.com/search?query=normal query";
    $sanitized_url = wp_sanitize_redirect($input_url);
    // 空白はエンコードされます
    

    説明: 入力されたURLの空白をエンコードし、安全な形式にします。

  4. 不正なスキームの排除

    $malicious_url = "javascript:alert('xss')";
    $sanitized_url = wp_sanitize_redirect($malicious_url);
    // $sanitized_urlは空の文字列になる
    

    説明: 不正なJavaScriptスキームを含むURLを処理し、安全でないため空の文字列が戻ります。

  5. 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に変換し、サニタイズ後にリダイレクトします。

この関数について質問する


上の計算式の答えを入力してください