MENU

allowed_tags()

allowed_tags() は、WordPress の特定のコンテンツに対して許可された HTML タグのリストを取得するための関数です。

ユーザー入力のサニタイズや、特定の投稿フォーマットに適したタグの制御を行う際に役立ちます。特に、wp_kses() などのフィルタリング関数と組み合わせて使用されることが多く、不正な HTML の挿入を防ぐのに有効です。

目次

機能の説明

この関数は、WordPress の kses(KSES: HTML サニタイズライブラリ)によって管理されている許可済み HTML タグと属性を取得します。特定のコンテンツ(投稿、コメント、ウィジェットなど)でどのタグが許可されているかを確認するために使用されます。

この関数を使用することで、フォーム入力や投稿エディタからの HTML の安全性を高めることができ、セキュリティ対策としても役立ちます。

シンプルなコード例

$allowed_tags = allowed_tags();
echo '<pre>' . print_r($allowed_tags, true) . '</pre>';

このコードは、許可されている HTML タグの一覧を取得し、画面に表示します。

使い方の説明

allowed_tags() は引数を受け取らないシンプルな関数で、実行すると WordPress の kses 設定に基づいた許可された HTML タグのリストを返します。

コメントフォームのサニタイズ

$comment_content = '<script>alert("XSS Attack");</script><strong>安全なテキスト</strong>';
$sanitized_content = wp_kses($comment_content, allowed_tags());
echo $sanitized_content;

このコードでは、wp_kses() を使用してコメントの内容をサニタイズし、許可されているタグのみを残します。<script> タグは削除され、<strong> タグは許可されるため保持されます。

一緒に使うことが多い関連タグ

wp_kses()

$sanitized_text = wp_kses($user_input, allowed_tags());
echo $sanitized_text;

wp_kses()allowed_tags() と組み合わせて使用されることが多く、指定されたタグのみに制限しつつ HTML を保持する役割を担います。

wp_kses_post()

$sanitized_post = wp_kses_post($user_input);
echo $sanitized_post;

wp_kses_post() は、投稿本文向けの HTML サニタイズを行います。許可されたタグは allowed_tags() に近いものですが、追加のルールが適用されます。

追加情報で取得したい場合

allowed_tags() の情報だけでなく、特定のコンテキストにおける許可タグを取得したい場合、以下の方法を使用できます。

kses_allowed_html() を使う

$context = 'post';
$allowed_html = wp_kses_allowed_html($context);
echo '<pre>' . print_r($allowed_html, true) . '</pre>';

この関数は、指定したコンテキスト(投稿、コメントなど)ごとに異なる許可タグを取得できます。

想定されるトラブル

allowed_tags() で取得できるタグが少ない

WordPress の kses 設定では、デフォルトで厳格なフィルタリングが行われます。カスタムルールを適用する場合は、kses_allowed_html フィルターを活用して許可タグを追加できます。

function custom_allowed_tags($tags, $context) {
    if ($context === 'post') {
        $tags['iframe'] = array(
            'src' => true,
            'width' => true,
            'height' => true,
        );
    }
    return $tags;
}
add_filter('wp_kses_allowed_html', 'custom_allowed_tags', 10, 2);

このコードは、post コンテキストに <iframe> タグを許可するように設定します。

Q&A

allowed_tags() はどのような用途で使うのが適切ですか?

allowed_tags() は、ユーザーの入力を安全にサニタイズする際に役立ちます。特に、wp_kses()wp_kses_post() と組み合わせることで、意図しない HTML の挿入を防ぐことができます。

allowed_tags()kses_allowed_html() と何が違うのですか?

allowed_tags() は一般的な許可タグのリストを取得しますが、kses_allowed_html() は特定のコンテキスト(投稿、コメントなど)に応じた許可タグを取得できます。

まとめ

allowed_tags() は、WordPress の kses による HTML サニタイズを理解し、許可されたタグを取得するための便利な関数です。

特に、ユーザー入力の処理を行う際には、wp_kses()kses_allowed_html() などと組み合わせて活用すると、安全なサイト運営に役立ちます。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次