Как стать автором
Обновить

Комментарии 21

Хоть бы намекнули про prepared statements, они же подготовленные выражения или связываемые переменные.

База данных, обрабатывая этот запрос, вернёт список записей, не являющихся NULL-значениями


Нет. Она вернет все записи из-за OR 1=1, так как NULL OR TRUE = TRUE

Сколько можно мусолить уже эти sql инъекции? 1000 статей про них написаны, и про методы противодействия тоже.

По-видимому, 17 человек не просто пользуются голым SQL, но ещё и собирают его из входных параметров. В 2021 году.
А что не так с голым SQL? ORM имеет гораздо меньше возможностей и мешает создать именно ту структуру, которую хочет разработчик (для сложных запросов без ручного составления все равно не обойтись, а структура уже не та).

Это ложная дихтомия, и не стоит споров в интернете.
Автор коммента выше не имел в виду что голый SQL никогда никому не нужен. Он всего лишь удивился количеству людей, для которых, с одной стороны, SQL инъекция представляет насущную проблему, а с другой — им неизвестны простейшие методы автоматизации (с гарантированной защитой) работы с базовым SQL.

Тогда согласен, смутила первая часть фразы оратора выше.

А зачем знакомиться, если эту проблему решили мульён лет назад?
Кодеров работающих по принципу копи/паст из первого попавшегося текста времен мамонтов не считаем.

Это не мешает появляться новому коду с этими проблемами в проде. Уж лучше лишний раз напомнить.

Или поменять програмистов/HR/QR/WHATEVER.
Ну это просто дичь из строк собирать SQL запрос, не ?

Конечно, дичь.
«Можно нанять более адекватного программиста, но это ведь дороже. За эти деньги лучше взять двух студентов и ещё на пиво останется» — говорит один пузатый дядя, которому надо отчитываться о бюджете, так как его бонус зависит только от этого фактора.

И для кого статья? Для пузатого дяди или студента который ее не прочитает (надо срочно и вчера)?
А если по полной утрировать ?


После того как "дым рассеется" студент найдет кучу статей

Статья для студента. Дяде уже ничего не поможет (хотя, есть варианты, но такая глубокая анатомия обычно выходит за рамки Хабра-тематики).
Студент найдёт только если будет знать что это надо искать. На Хабре статьи обычно не ищут, а просто читают ленту.

Если "нужно вчера" (других причин не вижу делать на отъе....) то студент будет искать "как сконкатенировать 2 выражения в SQL строку" извините.
И пропустит эти ваши непонятные инъекции )

Для соединения строк не надо добавлять ключевое слово «SQL».

А где об этом сказано?
Вот о том и речь, что непонятно что ищете.

Это надо говорить не нам, это надо говорить студентам. Которые на тостер пишут вопросы вида "у меня база данных все переводы строк съела".


Да и преподавателям тоже, у которых например sprintf — это функция для составления SQL запросов.

Верно. Вот как раз для них эта статья.
Отцы-основатели еще в дремучие годы предусмотрели все это. И не только Static, но и Embedded 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 '--' является комментарием лишь когда после него поставлен пробел.

Не просто низкий, а очень низкий технический уровень материала.


Тут как раз на днях была статья про то как за маркетингом не видно человека.
Вот здесь как раз этот самый случай: помимо бюджета на продвижение компании в интернете есть вообще-то ещё и читатель, для которого, по крайней мере в теории, пишутся статьи на хабре. А этот читатель не вынесет из данной статьи вообще ничего.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий