⑴ php中,通過$_GET 和 $_POST 取得的數據 安不安全 需要什麼過濾函數處理嗎
引號過濾有magic_quotes_gpc(伺服器配置)
函數addslashes() htmlspecialchars(,ENT_QUOTE);
注意伺服器上是否已經開啟magic_quotes_gpc
(php>=5.3 已經廢棄了它) 如果已經開啟,再進行轉義會導致雙層轉義。 另外addslashes() addcslashes() 都不能對數組進行處理,需要寫一個遞歸實現。
你可以使用函數get_magic_quotes_gpc()來檢測它是否已經開啟
不建議使用addslashes使用addslashes可能會因為資料庫編碼的問題使得單引號未被轉義了解詳情可訪問:http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
⑵ php過濾危險html代碼
用PHP過濾html里可能被利用來尺散引入外部危險內容的代碼。有些時候,需要讓用戶提交html內容,以便豐富用戶發布的信息,當然,有些可能造成顯示頁面布陵困亂局混亂的代碼也在過尺檔濾范圍內。
以下是引用片段:
#用戶發布的html,過濾危險代碼
function uh($str)
{
$farr = array("/s+/", //過濾多餘的空白
"/(/?)(script|i?frame|style|html|body|title|link|meta|?|\%)([^]*?)/isU", //過濾 script 等可能引入惡意內容或惡意改變顯示布局的代碼,如果不需要插入flash等,還可以加入object的過濾
"/([^]*)on[a-zA-Z]+s*=([^]*)/isU", //過濾javascript的on事件);
$tarr = array(" ",
"<\1\2\3>", //如果要直接清除不安全的標簽,這里可以留空
"\1\2",);
$str = preg_replace( $farr,$tarr,$str);
return $str;
}