2011-08-27 209 views
0

可能重複:
How to escape strings in MSSQL using PHP?防止SQL注入的PHP

我想提出一個系統,我需要防止SQL注入。我正在使用PHP和SQL Server 2008 R2。基本上我想知道的是,如果我可以使用:

mysql_real_escape_string 

或者是否有特定的SQL Server。任何反饋讚賞。

+0

我認爲MySQL的真正轉義字符串應該是夠你用的,我米不確定,但等待其他答案。 –

+0

@BookOfZeus,不,這不是一個愚蠢的問題,因爲它沒有解決MSSql –

+0

@Rikudo Sennin,不是你錯了。 'mysql_real_escape_string'是用於MySql而不是MSSQL的函數。 –

回答

2

我建議開始使用PDO。通過這種方式,您可以使用參數化查詢來處理幾乎所有的事情,包括SQL注入,並支持包括MSSQL在內的非常大的RDBMS。

以下是一些可幫助您入門的主題。

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

http://www.php.net/manual/en/book.pdo.php

+0

更好的解決方案。 –

+0

謝謝易卜拉欣。現在閱讀並使用PDO。事實上,我使用轉義字符串讀取某處並不是那麼安全。謝謝 – MaxI

+0

我知道這個問題在2011年被問到,但截至2013年,PDO不再支持MSSQL。 – gal

-1

你不能使用mysql特定的轉義函數。

使用在bound parameters中處理的東西。

+0

他正在使用Microsoft SQL而不是MySql –

+0

@WilliamTWild - 是的,他們是。這個答案中的許多陳述是如何錯誤的? – Quentin

0

我有一個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); 

    ?>