目次
概要
フォームに特殊文字が入力された場合、予期せぬ動作を起こすことがある。
これを防ぐためにサニタイズ処理を施す。
使用する関数
サニタイズ実装は、htmlspecialchars関数を使う。(公式リファレンス)
これにより、HTMLタグを「HTMLエンティティ」へ変換し、スクリプト等を無効化することができる。
変換例:「<br>」→「<br>」
// サニタイズ
<?php
$clean = array();
if (!empty($_POST)) {
foreach ($_POST as $key => $value) {
$clean[$key] = htmlspecialchars($value, ENT_QUOTES);
}
}
?>
※ENT_QUOTES:シングルクォート、ダブルクォートのどちらもHTMLエンティティへ変換
解説
①配列を初期化
②POSTパラメータの判定→無ければスルー
③POSTパラメータを配列ごと渡し、$cleanに格納
④配列のキーは同じなので、以降は「$_POST」を「$clean」として使用
$clean[$key]の値はすべてサニタイズされた値を取得できる
その他
独自関数として別ファイルで作成しておき、使用時に呼び出す方法でもOK
//escape.php等としてファイル作成
<?php
function escape($string)
{
return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
呼び出す時
//同じ階層のファイルに適用する場合
require_once __DIR__ . 'escape.php';
<?php echo escape($string[$key]); ?>
コメント