[php] 安全處理
- 過瀘危險字元
mysql_real_escape_string($_POST[Str])
把SQL字元都加上檢查 get_magic_quotes_gpc 是否被開啟get_magic_quotes_gpc 如果被開啟的話會自動把特殊字元加上反斜線,這時候再mysql_real_escape_string的話會造成資料錯誤
// 檢查 get_magic_quotes_gpc 功能是否開啟
if (get_magic_quotes_gpc())
attribute_escape($text);
把html控制字元(如<>)轉成&&之類的型式
檢查來源
$_SERVER[HTTP_REFERER]
可以取得使用者上一頁的url過瀘變數的長度、數值等等
- 隱藏目錄
- 不顯示錯誤訊息
整理流程
//將所有透過$_get/$_post的特殊文字加上反斜線
if(PHP_VERSION >= 6 || !get_magic_quotes_gpc()) {
$_REQUEST = array_map( ‘addslashes’, $_REQUEST);
}
接收表單文字時
function myStripslashes($value){
// 若 get_magic_quotes_gpc 功能已經開啟,就刪掉反斜線
if (get_magic_quotes_gpc())
function myStripslashes($value){
// 若 get_magic_quotes_gpc 功能已經開啟,就刪掉反斜線
if (get_magic_quotes_gpc())
$value = stripslashes($value);
return $value;
}
}
寫入資料庫時
mysql_real_escape_string($_POST[xxx]);
其它漏洞
action=$_SERVER[‘PHP_SELF’]
可能會被XSS攻擊
改用
htmlentities($_SERVER[‘PHP_SELF’])