如何转义NSString以防止带有Core Data的SQLInjection

时间:2012-03-22 11:41:51

标签: ios sql-injection

从输入字段中转义搜索字符串以阻止SQLInjections的最佳方法是什么?

是否有像PHP这样的mysql_real_escape_string方法,或者我应该手动替换/转义不同的字符,如:OR, AND, LIKE, WHERE, DELETE, INSERT, UPDATE, FROM, GROUP BY, ORDER BY等等?

2 个答案:

答案 0 :(得分:1)

关闭答案:@Nick Weaver:

  

我认为你不必照顾它。

答案 1 :(得分:-4)

将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