WordPress入門〜④意図しないタグを除去する関数〜


みなさんおはこんにちバンガロール。どーも、わーくんです!

今回はエスケープ処理の最終章、意図しないタグを除去する関数についてお話いたします。

▶︎予め決めたタグのみを許可する


WordPressではwp_kses_post()関数が用意されています。この関数は<a href="...">や<br>などのHTMLタグは許可します。しかし許可されていない<script>等の要素は除去します。許可されているタグと属性については、wp-includes/kses.phpの$allowedposttagsに記述されています。

サイト管理者の都合で管理画面からHTMLタグを入力する必要があるデータには、このwp_kses_post()関数を使います。例えば、

<?php 
$data='<a href="http://www.mdn.co.jp/" onclick=alert("hello")>Webサイト</a>';
echo wp_kses_post($data);
?>

と記述すると、実際に出力されるリンクのHTMLは

<a href="http://www.mdn.co.jp">Webサイト</a>

となります。ここではwp_kses_post()関数により、許可されていないタグ(onclick=alert())が除去されたのです。

▶︎echoで出力するときは必ず使う

テンプレートファイルでechoで出力する場合は、必ず「echo esc_○○」とこれまで学んだ関数を通して出力するようにしましょう。原則エスケープを行うようにして、エスケープしないケースを例外と認識しておいた方がデータが外部に漏れる危険性は減ります。

URLはすべてesc_url()、属性値はすべてesc_attr()を使いましょう。データを出力する場合もesc_html()の使用が原則です。基本的に外部から入力されるデータにはHTMLタグを許可しないようにしましょう。

esc_html()を使わないケースは管理者が管理画面からHTMLを入力するなど、HTMLタグを含む必要がある場合のみです。

これにてエスケープ処理については以上になります。

この記事を読んで下さった方の少しでもお力になれれば幸いです。

それではまた来週!!!