[PHP] 文字をエスケープする
プログラムでHTMLをそのまま出力すると、脆弱性を生んでしまうことがあります。入力フォームなどからインプットされたデータを表示するには、エスケープ処理をして特殊文字を無効化する必要があります。
echo '<script>alert("危ない");</script>';
無効化するには htmlspecialchars を利用します。
$escape = htmlspecialchars('<script>alert("危ない");</script>', ENT_QUOTES|ENT_HTML5, "UTF-8");
<script>alert("危ない");</script>
元の文字に戻すには、htmlspecialchars_decode を利用します。
$html = htmlspecialchars_decode($escape);
<script>alert("危ない");</script>';
各種フレームワークでは用意されていることが多いですが、htmlspecialchars は関数化して利用すると良いでしょう。
echo h('<script>alert("危ない");</script>');
function h($h) {
return htmlspecialchars($h, ENT_QUOTES|ENT_HTML5, "UTF-8");
}