【WordPress】esc_url関数(旧:clean_url関数)について

公開日:
更新日:
カテゴリー: WordPress

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関連のエスケープ処理の詳細はこちらを参照してください。

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント