2012-03-22 46 views
0

從輸入字段中轉義搜索字符串以防止SQL注入的最佳方式是什麼?如何轉義NSString以防止SQL注入與核心數據

是否有像PHP這樣的mysql_real_escape_string方法,或者我應該手動替換/轉義不同的字符:OR, AND, LIKE, WHERE, DELETE, INSERT, UPDATE, FROM, GROUP BY, ORDER BY等等?

+2

我不認爲你必須關心這一點。 – 2012-03-22 11:46:12

+0

可能的重複[如何防止在覈心數據中的SQL注入?](http://stackoverflow.com/questions/3076894/how-to-prevent-sql-injection-in-core-data) – bryanmac 2012-03-22 11:47:45

+0

也作爲尼克說 - 你試過注射嗎?我會想像CoreData這樣的框架在使用sqlite消除sql注入時使用參數 – bryanmac 2012-03-22 11:48:38

回答

1

關閉從答案:@Nick韋弗:

我不認爲你必須要對照顧。

-3

將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

+0

我不需要PHP SQL轉義 – CarlJ 2012-04-10 08:18:35