Как избежать NSString, чтобы предотвратить SQLInjection с Core Data - PullRequest
0 голосов
/ 22 марта 2012

Каков наилучший способ экранирования строки поиска из поля ввода для предотвращения SQLInjection?

Существует ли метод mysql_real_escape_string, как в PHP, или я должен вручную заменить / экранировать различные символы, такие как: OR, AND, LIKE, WHERE, DELETE, INSERT, UPDATE, FROM, GROUP BY, ORDER BY и так далее?

Ответы [ 2 ]

1 голос
/ 15 апреля 2012

закрыто с ответом от @Nick Weaver:

Я не думаю, что вы должны заботиться об этом.

0 голосов
/ 07 апреля 2012

Хорошим вариантом является использование mysql_real_escape_string для поискового запроса. Однако вы должны знать о 2 вещах:

1) Если вы применяете это решение в другой ситуации, убедитесь, что параметр всегда указан в кавычках, когда он интегрируется. Короче говоря, mysql_real_escape_string не защищает вас от числовых параметров. Вот 2 примера:

$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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...