2014年6月9日 星期一

【PHP】過濾字串,防止XSS及SQL Injcettion

addslashes 過濾危險字元前面加\ 。
stripslashes 還原將\拿掉。
htmlspecialchars 只針對部份特殊字元處理, 所以未指定字串實際編碼時,仍然可以正確運作。
htmlentities 針對全部字元處理,所以若未指定字串正確編碼時,就會出現亂碼,因為預設是 ISO 編碼,修改編碼方式,htmlentities($str, ENT_QUOTES, 'UTF-8')。
htmlspecialchars 解譯htmlspecialchars_decode
mysql_real_escape_string 轉義SQL 語句中使用的字符串中的特殊字符。
過濾掉ch(xx) preg_replace("/ch(.*?)/","",$str)

防止 SQL injection 最好的方式是用 PDO ,不用過濾字也不會有這問題,因為他SQL語句跟變數是分開發送,但舊版的程式要全部改成 PDO 工程浩大,所以還是要用上述方法來防範,XSS攻擊可用 htmlspecialchars 、htmlentities 作防範,全過一次過濾可以用 array_walk_recursive、array_map。

沒有留言:

張貼留言