[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’])

Next: [WEB] CKEditor 3.x WYSIWYG Editor 所見即所得編輯器安裝及設定 Prev: 軟體清單