2024年07月01日
1.WPのエスケープ処理
ここではWordPressでデータをechoする場合の注意事項を下記で解説しています。
1.エスケープ処理の必要性
WordPressは、PHPで記述されたプログラムをHMTLに変換してデバイスに送信します。
一方、デバイス側のブラウザは、このHTML言語を解釈し画面を生成して表示します。
この画面に入力欄があり、利用者がここに悪意を持って危険なスクリプトを入力し、WordPress側でこれを単純にechoすると、危険なスクリプトが動く脅威が発生します。
これを回避するのがエスケープ処理で、echoする前にこの処理を行う事で、この脅威を回避します。
更に、ターゲットは入力欄だけでなくチェックボックス等でも同じで、プログラムを使えば簡単にチェックボックスに危険なスクリプトを書くことができます。
またWordPressのDBのデータをechoする場合も、DBの中にこの様な危険なコードが書かれてない保証はありません。
そこでWordPressでは、echoコマンドを使う場合は適切な方法でデータをエスケープ処理(無害化)する事を求めており、幾つかの関数が用意されています。
2.エスケープ処理の基本的な考え方
WordPressのエスケープ処理は、出力文字の中にある下記の[記号]を[文字コード]に変換したり、削除する処理になります。
危険なコードとは下記の様なコードです。
記号 | 文字コード | 読み方 |
< | < | 小なり |
> | > | 大なり |
' | ' | シングルクォーテーション |
" | " | ダブルクォーテーション |
& | & | アンパサンド |
<> は、HTMLのタグを囲む記号です。
これを <> に変換してechoすると、これはHTMLタグではなく文字の <> として表示されます。
この様にブラウザから戻ってきたデータやDBの値を表示するデータにはHTMLタグが無い様に処理するのがエスケープ処理です。
3.WordPressで用意されているエスケープ関数
WordPressでは下記の様なエスケープ関数を用意しています。
関数 | 解説 |
esc_html() | 一般的な文字列に利用するエスケープ処理(無害化)関数です。 |
esc_html_e() | echo esc_html()の代わりとして使える翻訳関数です。 |
esc_url() | URLをエスケープ処理(無害化)する関数です。 |
esc_attr() | HTML要素の属性値のエスケープ処理(無害化)する関数です。 |