クロスサイトスクリプティング(XSS)とは
WEBサイト中で動的にHTMLやJavascriptを生成している部分に、悪意のあるコードを埋め込む攻撃のこと。
この対策は本質的な対策法は、 悪意あるコードを埋め込めないようにすることです。
クロスサイトスクリプティング(XSS)対策
1. 入力値の制限する
HTMLにはmaxlengthという入力文字制限数を決められるものがあり、 下のコードは9文字以上は入力できないという意味です。
phpにもstrlenという文字数を数える関数が存在するので下のコードのようにすることができます。
if (strlen($data) > 8) { $_errors[] = "文字数が8文字を超えています" ; }
2. サニタイジング(スクリプトの無害化)
<> 、 “ 、 & を文字参照にするためにはエスケープ処理を行う必要があります。
エスケープ処理を可能にする関数がhtmlspecialchars関数です。
htmlspecialchars(エスケープする文字列, エスケープの種類, 文字コード);
で定義することができます。 例えば、
$str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
このように記述します。
ここで、第二引数のエスケープの種類は三種類あります。
1.ENT_COMPAT ダブルクォートは置き換えるが、シングルクォートは置き換えない
2.ENT_QUOTES シングルクォートとダブルクォートの両方を置き換える
3.ENT_NOQUOTES シングルクォートとダブルクォートの両方を置き換えない
以上でサニタイジングの説明は終わります。
まだまだクロスサイトスクリプティング(XSS)の対処法はたくさんあるので、学んでいきたいです。