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タグを含む必要がある場合のみです。
これにてエスケープ処理については以上になります。
この記事を読んで下さった方の少しでもお力になれれば幸いです。
それではまた来週!!!