我想提出一個系統,我需要防止SQL注入。我正在使用PHP和SQL Server 2008 R2。基本上我想知道的是,如果我可以使用:
mysql_real_escape_string
或者是否有特定的SQL Server。任何反饋讚賞。
我想提出一個系統,我需要防止SQL注入。我正在使用PHP和SQL Server 2008 R2。基本上我想知道的是,如果我可以使用:
mysql_real_escape_string
或者是否有特定的SQL Server。任何反饋讚賞。
我建議開始使用PDO。通過這種方式,您可以使用參數化查詢來處理幾乎所有的事情,包括SQL注入,並支持包括MSSQL在內的非常大的RDBMS。
以下是一些可幫助您入門的主題。
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
你不能使用mysql特定的轉義函數。
使用在bound parameters中處理的東西。
他正在使用Microsoft SQL而不是MySql –
@WilliamTWild - 是的,他們是。這個答案中的許多陳述是如何錯誤的? – Quentin
我有一個CALSS我爲我的項目,也許它可以幫助你
<?php
class clean
{
public static function stripJS($input)
{
return preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $input);
}
public static function email($input)
{
return clean::stripJS(filter_var($input, FILTER_SANITIZE_EMAIL));
}
public static function noTags($input)
{
return strip_tags(clean::stripJs($input));
}
public static function dbIN($input)
{
return mysql_real_escape_string(self::stripJS($input));
}
public static function dbOUT($input)
{
return stripslashes($input);
}
}
$input = clean::dbIN($input);
?>
我認爲MySQL的真正轉義字符串應該是夠你用的,我米不確定,但等待其他答案。 –
@BookOfZeus,不,這不是一個愚蠢的問題,因爲它沒有解決MSSql –
@Rikudo Sennin,不是你錯了。 'mysql_real_escape_string'是用於MySql而不是MSSQL的函數。 –