SP用メニューボタン
ソレゾレブログ

技術的な事だったり日常の気になる事だったり

WordPressのクロスサイトスクリプティング攻撃対策におけるソースコードのエスケープ処理

スポンサーリンク

WordPressのセキュリティ対策には様々なものがありますが、ここではXSS攻撃を受ける対象の特殊文字をエスケープする方法について書いていきます。

概要については下記ブログに一覧にしてまとめております。ここではその設定方法と関連する情報の詳細について書いていきます。

エスケープ処理が必要な個所

XSS攻撃の対象となるのは下記表にある特殊文字です。これらの特殊文字をHTMLエンティティ文字(&から始まって;で終わる特殊文字の別表記方法)に変換することで対処します。

特殊文字HTMLエンティティ文字
<(小なり)&lt;
>(大なり) &gt;
& (アンド/アンパサンド) &amp;
” (ダブルクォーテーション) &quot;
‘ (シングルクォーテーション) &;apos
【表1】特殊文字とHTML エンティティ文字の一覧表

尚、すべてのWordpressの関数には「the_」で始まる関数と「get_」で始まる関数がありますが、「the_」で始まる関数は既にその関数の中でエスケープ処理が施されているため改めてエスケープする必要はありません。

エスケープ処理が必要なのは「get_」で始まる関数と言うことになります。

ですので必然的に、「the_」で始まる関数で機能的に事足る場合は 「the_」 使用する方法をお勧めします。

厳密に言うと少し例外もあるようですが、ひとまずそう覚えておけば問題ないと思われます。

スポンサーリンク

エスケープ処理の方法

一般的使われる「esc_html」「esc_attr」「esc_url」の3つだけ覚えておけばよさそうですが、そのほかのエスケープ処理について知りたい方は下記外部サイトを参照してください。

esc_html

本文中にHTMLタグを記載した際に特殊文字をエスケープする為に使用します。

<?php esc_html( 'ここにエスケープするHTMLタグを記載' ) ?>

esc_attr

HTMLタグの属性値のalt、value、title などに特殊文字がある場合に使用します。

<input type="text" value="<?php echo esc_attr( 'ここにエスケープする属性値を記載' ); ?>">

esc_url

テキストや属性値などにURL(href)が設定されていた場合に使用します。

害のあるプロトコル(初期値ではhttp, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet以外)を拒否したり、無効なキャラクタの除外、危険なキャラクタの削除、をしてくれるようです。

<a href="<?php echo esc_url( home_url( 'ここにエスケープするURLを記載' ) ); ?>">Home</a>