##XSS(クロスサイトスクリプティング)攻撃のセキュリティリスク
###これは超々基本的なセキュリティ対策。
ユーザーが入力フォーム(SNSの投稿欄など)にコードを記入することで、そのコードが実行されてしまい、Cookieが攻撃者に取得され、不正ログインなどにつながる!
###対策
特殊文字(<,>など)をエスケープする。
エスケープとは、文字参照に置き換えるという意味。
例えば、"<"と単純な文字として認識させる。
###方法
#####htmlspecialchars($string, $flags, $encoding)を用いる!
$string:変換する文字列
$flags:処理の仕方を指定するフラグ
例)ENT_QUOTESなら、シングルクォーテーションかダブルクォーテーションに囲まれている文字列を指定する。
$encoding:文字を変換するときに使用するエンコーディング
htmlspecialchars('<script>...</script>',ENT_QUOTES,'UTF-8')
'<script>...</script>'が文字列になる。
下のように関数化してしまえば楽。
function escape($string)
{return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');}
echo escape($review);
####・おまけ
nl2br()について
nl2br(escape($review['summary']));
フォーム入力で改行された部分のHTMLに自動的にを差し込む。
テキストに入力された通りに改行したものを表示できる。
escape(nl2br($review['summary']));
escapeを先に書いてしまうと改行タグも文字列として表示してしまうので注意!