wp_kses()


WordPress関数wp_kses()は、指定されたHTMLタグや属性をフィルタリングし、不正な内容が出力されるのを防ぐために使用されます。

構文

wp_kses( string $data, array $allowed_html, array $allowed_protocols = array() );

引数の説明:

  • $data (string) — フィルタリングされる入力データ。
  • $allowed_html (array) — 許可されるHTMLタグとその属性のリスト。
  • $allowed_protocols (array) — 許可されるURLプロトコルのリスト (例: http, https, mailto)。

例1: 基本的な使用方法

以下のコードは、指定したタグと属性のみを許可します。

<?php
$input = '<a href="http://example.com" target="_blank">リンク</a>';
$allowed_tags = array(
    'a' => array(
        'href' => array(),
        'target' => array(),
    ),
);
echo wp_kses( $input, $allowed_tags );
?>

例2: プロトコルのフィルタリング

許可されるプロトコルを制限する場合の例です。

<?php
$input = '<a href="javascript:alert(\'XSS\')">悪意のあるリンク</a>';
$allowed_tags = array(
    'a' => array(
        'href' => array(),
    ),
);
$allowed_protocols = array( 'http', 'https' );
echo wp_kses( $input, $allowed_tags, $allowed_protocols );
?>

例3: 複数のタグと属性を許可

複数のHTMLタグとその属性を指定する例です。

<?php
$input = '<p style="color: red;">テキスト</p><a href="https://example.com">リンク</a>';
$allowed_tags = array(
    'p' => array(
        'style' => array(),
    ),
    'a' => array(
        'href' => array(),
    ),
);
echo wp_kses( $input, $allowed_tags );
?>

例4: HTMLエスケープとしての使用

許可されていないタグや属性が削除される例です。

<?php
$input = '<script>alert("XSS");</script><b>安全なテキスト</b>';
$allowed_tags = array(
    'b' => array(),
);
echo wp_kses( $input, $allowed_tags );
?>

例5: カスタムデータのサニタイズ

入力データを安全にサニタイズする例です。

<?php
$input = '<div class="custom-class">カスタムHTML</div>';
$allowed_tags = array(
    'div' => array(
        'class' => array(),
    ),
);
echo wp_kses( $input, $allowed_tags );
?>

注意事項

  • $allowed_htmlで正確に許可するタグや属性を定義しないと、意図しないタグがフィルタリングされる可能性があります。
  • 不正なデータがエスケープされる保証があるため、出力時に適切なタグを指定する必要があります。
  • 特定のユースケースでwp_kses_post()のようなプリセット関数を使用することも検討してください。

関連機能: