【WordPress】esc_url関数(旧:clean_url関数)について
WordPressのesc_url関数について説明しています。
esc_url関数
esc_url関数は、URLを無害化する関数です。
具体的には、プロトコル( http、https、ftp、ftps、mailto、news、irc、gopher、nntp、feed、telnet)を持たない URL を拒否し、不正な文字を排除し、危険な文字を除去します。
URLの出力時に用いることで、XSS(クロスサイトスクリプティング)攻撃や意図しないエラーを回避できます。
WordPressのバージョン2.8から実装され、その前はclean_url関数が使われていました(バージョン3.0で非推奨とされました)。
用例
基本的な使い方ですが、URLを出力するときに用います。
例えば、最新記事5件を表示する場合、以下のようにします。
<?php //最新記事を5件表示する query_posts('showposts=5'); //記事があるか確認し、あればループする if(have_posts()): while(have_posts()): the_post(); //記事リンクの出力 echo '<a href="' . esc_url(get_permalink()) . '">' . the_title_attribute('echo=0') . '</a>'; //ループ終了 endwhile; endif; ?>
良い例が思い浮かばなかったのでこれにしましたが、この用例では第三者から情報を受け取っておらず、出力するのはパーマリンクだけなので、esc_url関数でエスケープ処理しなくてもXSSの脆弱性はないと言えます。
しかし基本的に何かを出力する際(特に信頼できないデータの場合)は、エスケープ処理するのが基本です(という私は面倒臭がりなのでサボっていますが笑)。
なお、タイトルの出力時に、「the_title()」ではなく「the_title_attribute('echo=0')」を使うのもセキュリティ上好ましいです(HTMLタグを除去してくれます)。
WordPress関連のエスケープ処理の詳細はこちらを参照してください。
あわせて読んでほしい!
コメント
まだコメントはありません。