##サニタイズとは?
サニタイズ
= 危険なコードやデータを変換または除去して無力化
する処理。
例えば、Webサイトに設置された入力フォームなどから、悪意のあるコードが入力され、その文字列が実行されることで様々な被害に遭う可能性があります。
サニタイズ
の一種にエスケープ
というものがあり、
大抵はサニタイズ
= エスケープ
として捉えている事がほとんどです。
##エスケープとは?
エスケープ
= 特殊な文字を無害な文字に強制的に置き換える
処理。
PHPでは< > ' " &
などの文字を変数値としてそのまま使用することができますが、これをHTMLにそのまま出力すると、HTMLタグなどの特殊文字として解釈されてしまいます。
なのでエスケープ処理することにより被害防止をすることが出来ます。
例えばHTMLだと、エスケープ処理することで下記のように勝手に特殊文字を変換してくれます。
表示 | エスケープ |
---|---|
> | < |
< | > |
" | " |
' | ' |
<?php
$html = '<h2>エスケープについて</h2>';
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サニタイズについて</title>
</head>
<body>
<h1>サニタイズについて</h1>
<?php echo $html; ?>
</body>
</html>
↓ ブラウザ表示
サニタイズについて //HTMLは問題なし。
<h2>エスケープについて</h2> // PHPは <h2> も表示されてしまう。
これではJavaScriptなどで悪質なコードを入力されてしまうと、勝手にアラートを鳴らされたり、ブラウザの中にある個人情報を勝手に取得して外部に送信されてしまうなどの恐れが出てきます。
対策方法は、例えばPHPには専用関数でhtmlspecialchars()があります。
JavaScriptやSQLでの対策方法については参考元リンクよりご覧ください。
参考元はこちら
エスケープ(https://qiita.com/n_hirai/items/df0a21d2409ee47973e5)
対策方法(https://webukatu.com/wordpress/blog/1635/#i)