從輸入字段中轉義搜索字符串以防止SQL注入的最佳方式是什麼?如何轉義NSString以防止SQL注入與核心數據
是否有像PHP這樣的mysql_real_escape_string
方法,或者我應該手動替換/轉義不同的字符:OR, AND, LIKE, WHERE, DELETE, INSERT, UPDATE, FROM, GROUP BY, ORDER BY
等等?
從輸入字段中轉義搜索字符串以防止SQL注入的最佳方式是什麼?如何轉義NSString以防止SQL注入與核心數據
是否有像PHP這樣的mysql_real_escape_string
方法,或者我應該手動替換/轉義不同的字符:OR, AND, LIKE, WHERE, DELETE, INSERT, UPDATE, FROM, GROUP BY, ORDER BY
等等?
關閉從答案:@Nick韋弗:
我不認爲你必須要對照顧。
將mysql_real_escape_string用於搜索查詢是一個不錯的選擇。但是,您需要了解兩件事情:
1)如果您在其他情況下應用此解決方案,請確保在集成時始終引用該參數。簡而言之,mysql_real_escape_string不會保護數字參數。這裏有兩個例子:
$bad_sql = "SELECT * FROM some_table WHERE id=" . mysql_real_escape_string($_GET['id']);
$good_sql = "SELECT * FROM some_table WHERE name='" . mysql_real_escape_string($_GET['id']) . "'";
2)第二個要考慮的是,mysql_real_escape_string不轉義通配符(%和_)。你不應該擔心這一點。然而,一個「完美」的解決方案逃避這些角色。
欲瞭解更多信息,你可以看看http://www.sqlinjection.net。
供參考:官方mysql_real_escape_string參考http://php.net/manual/en/function.mysql-real-escape-string.php。
我不需要PHP SQL轉義 – CarlJ 2012-04-10 08:18:35
我不認爲你必須關心這一點。 – 2012-03-22 11:46:12
可能的重複[如何防止在覈心數據中的SQL注入?](http://stackoverflow.com/questions/3076894/how-to-prevent-sql-injection-in-core-data) – bryanmac 2012-03-22 11:47:45
也作爲尼克說 - 你試過注射嗎?我會想像CoreData這樣的框架在使用sqlite消除sql注入時使用參數 – bryanmac 2012-03-22 11:48:38