Comments 21
Хоть бы намекнули про prepared statements, они же подготовленные выражения или связываемые переменные.
База данных, обрабатывая этот запрос, вернёт список записей, не являющихся NULL-значениями
Нет. Она вернет все записи из-за OR 1=1, так как NULL OR TRUE = TRUE
Сколько можно мусолить уже эти sql инъекции? 1000 статей про них написаны, и про методы противодействия тоже.
Это ложная дихтомия, и не стоит споров в интернете.
Автор коммента выше не имел в виду что голый SQL никогда никому не нужен. Он всего лишь удивился количеству людей, для которых, с одной стороны, SQL инъекция представляет насущную проблему, а с другой — им неизвестны простейшие методы автоматизации (с гарантированной защитой) работы с базовым SQL.
А зачем знакомиться, если эту проблему решили мульён лет назад?
Кодеров работающих по принципу копи/паст из первого попавшегося текста времен мамонтов не считаем.
Или поменять програмистов/HR/QR/WHATEVER.
Ну это просто дичь из строк собирать SQL запрос, не ?
«Можно нанять более адекватного программиста, но это ведь дороже. За эти деньги лучше взять двух студентов и ещё на пиво останется» — говорит один пузатый дядя, которому надо отчитываться о бюджете, так как его бонус зависит только от этого фактора.
И для кого статья? Для пузатого дяди или студента который ее не прочитает (надо срочно и вчера)?
А если по полной утрировать ?
После того как "дым рассеется" студент найдет кучу статей
Студент найдёт только если будет знать что это надо искать. На Хабре статьи обычно не ищут, а просто читают ленту.
Если "нужно вчера" (других причин не вижу делать на отъе....) то студент будет искать "как сконкатенировать 2 выражения в SQL строку" извините.
И пропустит эти ваши непонятные инъекции )
А где об этом сказано?
Вот о том и речь, что непонятно что ищете.
Это надо говорить не нам, это надо говорить студентам. Которые на тостер пишут вопросы вида "у меня база данных все переводы строк съела".
Да и преподавателям тоже, у которых например sprintf — это функция для составления SQL запросов.
Например, в достаточно популярной MySQL запрос с инъекцией сам по себе выполнен, конечно, будет, но вот при выполнении из программы на ЯВУ обратно прилетит ошибка
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--' and password='RandomPass'' at line 1А всё потому, что с точки зрения MySQL '--' является комментарием лишь когда после него поставлен пробел.
Не просто низкий, а очень низкий технический уровень материала.
Тут как раз на днях была статья про то как за маркетингом не видно человека.
Вот здесь как раз этот самый случай: помимо бюджета на продвижение компании в интернете есть вообще-то ещё и читатель, для которого, по крайней мере в теории, пишутся статьи на хабре. А этот читатель не вынесет из данной статьи вообще ничего.
Первое знакомство с SQL-инъекциями