Недостатки mysql_real_escape_string?

Я видел, как несколько человек здесь утверждают, что объединение запросов с использованиемmysql_real_escape_string не защитит вас (полностью) от атак SQL-инъекций.

Тем не менее, мне еще предстоит увидеть пример ввода, который иллюстрирует атаку, котораяmysql_real_escape_string не защитит вас от Большинство примеров забывают, чтоmysql_query ограничен одним запросом и использованиемmysql_real_escape_string неправильно.

Единственный пример, который я могу вспомнить, это следующее:

mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));

Это не защитит вас от следующего ввода:

5 OR 1=1

Я бы видел это как неправильное использованиеmysql_real_escape_string скорее, чем недостаток, он предназначен для строк, а не числовых значений. Вы должны либо привести к числовому типу, либо, если вы собираетесь обрабатывать ввод как строку при очистке, вы должны сделать то же самое в запросе и заключить его в кавычки.

Может кто-нибудь привести пример ввода, который можно обойтиmysql_real_escape_string это не зависит от неправильной обработки числовых значений или забыть, чтоmysql_query можно выполнить только один запрос?

Изменить: меня интересуют ограниченияmysql_real_escape_string и не сравнивая его с альтернативами, я понимаю, что есть лучшие варианты для новых проектов, и я не оспариваю это.

Ответы на вопрос(2)

Ваш ответ на вопрос