2009年3月2日 星期一

PHP防隱碼攻擊

隱碼攻擊是由SQL接字串時所引發的安全性問題
在沒有防隱碼攻擊的一些網站可介由任何一個input輸入
' or '1' = '1
以達到入侵的需求,最慘的是還可以下一些SQL DELETE FROM的語法

在這裡介紹2個php防隱碼的方法

1.建立一個funtion 利用preg_match去檢查字串

function contains_newlines($str_to_test) {
if(preg_match("/(%0A|%0D|\\n+|\\r+)/i", $str_to_test) != 0) {
echo "你輸入的字串可能含有 injection 漏洞攻擊,請重新檢查!!";
exit;
}
}

2.利用mysql_escape_string 去將含有"'"的字串,自動加一個"\"

$str = "doremi's home";
$escaped_str = mysql_escape_string($str);
printf ("%s\n", $escaped_str);
輸出:
doremi\'s home

以上方法在為了檢查字串的安全性,再塞給sql去動作

沒有留言:

##EasyReadMore##