1
1

More than 3 years have passed since last update.

サニタイズ / エスケープについて

Last updated at Posted at 2020-11-07

サニタイズとは?

サニタイズ = 危険なコードやデータを変換または除去して無力化する処理。

例えば、Webサイトに設置された入力フォームなどから、悪意のあるコードが入力され、その文字列が実行されることで様々な被害に遭う可能性があります。

サニタイズの一種にエスケープというものがあり、
大抵はサニタイズエスケープとして捉えている事がほとんどです。

エスケープとは?

エスケープ = 特殊な文字を無害な文字に強制的に置き換える処理。
PHPでは< > ' " &などの文字を変数値としてそのまま使用することができますが、これをHTMLにそのまま出力すると、HTMLタグなどの特殊文字として解釈されてしまいます。
なのでエスケープ処理することにより被害防止をすることが出来ます。

例えばHTMLだと、エスケープ処理することで下記のように勝手に特殊文字を変換してくれます。

表示 エスケープ
> &lt
< &gt
" &quot
' &#039
<?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)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1