- MYSQL
當MySQL成功連線後,我們就可以使用mysql_real_escape_string()進行過濾,而為什麼需要在連線後才使用,原因是他需要取得資料庫中的編碼資料。
在手冊中有一個簡單的例子:if(get_magic_quotes_gpc()) $product_name=stripslashes($_POST['product_name']);
如果魔術引號有開啟的話,那麼就先把他取消。
然後換成使用mysql_real_escape_string()進行過濾:$sql=sprintf("INSERT INTO products (`name`, `user_id`) VALUES ('%s', %d)",mysql_real_escape_string($product_name, $link),$_POST['user_id']);
也可以使用以下function進行過濾:function dataFilter($value)
{
if (is_int($value) || is_float($value)) return $value;
if (is_bool($value)){ return $value ? true : false; }
if (is_null($value)) return null;
return "'" . mysql_real_escape_string($value,$link) . "'";
} - MSSQL
而MsSQL中,和MySQL不相同的是並非使用反斜,而是將單引轉成雙引:function mssql_real_escape_string($value)
{
if (get_magic_quotes_gpc())
{
$value=stripslashes($value);
}
$value = str_replace("'", "''", $value);
return $value;
}
針對SQL注入攻擊的過濾
Labels:
PHP
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言