Потому что mysql_real_escape_string их не экранирует и может использоваться например оператор LIKE, где эти спецсимволы применяються. _ замещает любой одиночный символ. % замещает последовательность из любого числа символов.
То что вы обсуждаете называеться: Фильтрация входящих данных от мусора Защита от скули это: mysql_real_escape_string
Я не говорю, что это именно sql инъекция и не подразумеваю выполнение произвольного кода. Это просто ошибка, которую стоит предотвращать. Указал я это отдельно от защиты от sql inj, как дополнение.
Скорее ошибка программирования. Авторизацию на LIKE никто в здравом уме не делает. А вот например для вывода статей можно, но максимум чего ты добьешься - это вывести статью на определенную букву.
Redwood Ты извини но и второй твой пример это пример быдлокода ))) ЗЫ http://ru.wikipedia.org/wiki/Внедрение_SQL-кода Внедрение SQL-кода (англ. SQL injection) — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода. Выделил ключевую фразу, подставка % к LIKE не являеться внедрением произвольного SQL-кода
Пускай в случае с авторизацией, это будет называться Authorization Bypass, а в случае с выводом всей инфы из БД вместо положенной, как то еще. Факт остается фактом, в паре с like эти символы следует экранировать.
Redwood, b3, прекращайте это непотребство, ТС задал конкретный вопрос является ли его способ фильтрации эффективным. Ответ нет и следовало остановиться на статье nerezus'а или ссылки на ман. А вы развели тут демагогию Redwood, ваша точка зрения понятна, но в общем случае экранировать эти символы не стоит. Хорошо что указали на это, но плохо, что начали так форсировать эту точку зрения b3, хватит троллить