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()
は、WordPress の kses
による HTML サニタイズを理解し、許可されたタグを取得するための便利な関数です。
特に、ユーザー入力の処理を行う際には、wp_kses()
や kses_allowed_html()
などと組み合わせて活用すると、安全なサイト運営に役立ちます。
コメント