7/11/2011

[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())

        $value = stripslashes($value);

    return $value;
}

寫入資料庫時

mysql_real_escape_string($_POST[xxx]);

其它漏洞


action=$_SERVER['PHP_SELF']

可能會被XSS攻擊
改用
htmlentities($_SERVER['PHP_SELF'])

沒有留言:

張貼留言