一、範例
<?php $img = "<img src='http://cdn.pingwest.com/wp-content/uploads/2015/07/hacker-big.jpg'>"; $script = "<script>alert('XSS')</script>"; //echo $img; //echo $script; //echo htmlspecialchars($img, ENT_QUOTES); //echo htmlspecialchars($script, ENT_QUOTES);
二、外來變數
三、過濾外來變數
用內建的 htmlspecialchars() 函數來過濾。
直接用 htmlspecialchars($string) 的話,預設只轉化雙引號,不對單引號做轉義,所以,這樣用htmlspecialchars($string,ENT_QUOTES) 更好。
另一個和 htmlspecialchars 很像的 htmlentities 函數並不適用中文,因為會連同中文字一起轉義。
用 htmlentities 和 htmlspecialchars 只能防止XSS攻擊,不能防止SQL隱碼攻擊。
$img = htmlspecialchars($img, ENT_QUOTES);
改用PHP的 filter_var 過濾器亦有同樣效果:
$img = filter_var($img, FILTER_SANITIZE_SPECIAL_CHARS);