про инъекции - интересно ли?

Фанат

oncle terrible
Команда форума
Ужасно вдруг зачесалось сделать доклад на конфу по изъезженной вдоль и поперёк теме SQL инъекций с сеансом разоблачения суеверий и предрассудков, к примеру:

- что искейпинг нужен для входящих данных
- что mysql_real_escape_string - это универсальная защита от инъекций, делает "вредные" символы "безопасными".
- что mysql_real_escape_string вообще имеет какое-то отношение к защите от инъекций.
- что mysql_real_escape_string "принимает во внимание текущую кодировку"
- что препареды - защита от всего, silver bullet
- что препареды "быстрее".
- что препареды "безопаснее", чем искейпинг (спорное, в принципе, утверждение, но в целом...)
- что при использовании препаредов искейпингом занимается база
- что запрос из комикса про мальчика Bobby Tables сможет нанести хоть какой-то вред стандартному PHP/MySQL приложению.

И с рекомендациями, что делать и как жить правильно.

С одной стороны, я понимаю, что (в теории) 2011 на дворе, никакого искейпинга, кругом препареды. Никаких запросов - кругом ОРМ, что давно всё пережёвано и разъяснено.
С другой - на практике я постоянно натыкаюсь на людей, убеждённых в каких-либо пунктах свыше, и на код, написанный исходя из этих убеждений, и на old good plain mysql.

или, всё-таки, контингент конфы составляют люди, которым это всё прописные истины и объяснять их не нужно?
 

shureen

Милорд Лось Кристофер
я бы с удовольствием послушал про это, особенно от Фаната, жаль на конфу не иду
 
  • Like
Реакции: craz

Single

пилот капсулы
Сам по себе вопрос разжеван чуть более чем полностью.
Если доклад будет хорошо подготовленным то почему бы и не послушать.
 

DiMA

php.spb.ru
Команда форума
Фанат, смотри, есть 3 функции mysql_real_escape_string, mysql_escape_string, addslashes, которыми эскейпили параметр в sql запросе. Есть три кодировки сервера: cp1251, utf8 и произвольная на усмотрение хакера. Итого 3х3 - 9 комбинаций. Ты готов [да и вообще - все мега-профи .-) себя могут проверить] за 30 секунд написать (не уходя с этой страницы), какие комбинации приводят к инъекции, а какие нет и пример/аргумент? Я к тому, что не стоит использовать сложные функции типа mysql_real_escape_string, когда addslashes достаточно. +Доп. задача не слешить ни одного лишнего символа, если без него можно обойтись.
 

Фанат

oncle terrible
Команда форума
Конечно готов :)
с cp1251 и utf8 не пропустят инъекцию все три.
с GBK mysql_escape_string и addslashes пропустят инъекцию всегда,а mysql_real_escape_string - в подавляющем большинстве использующегося кода (в котором написано SET NAMES а не mysql_set_charset).
пример/аргумент - известная статейка Шифлетта. пруфкод здесь: http://phorror.livejournal.com/71614.html

доп. задачу я не очень понял. можно пример/аргумент?
и что имеется в виду под обойтись? \r\n - лишние?
интересный, кстати, вопрос. в принципе, я как-то пытался нулл-байтом строку поломать, и у меня не получилось. поэтому теоретически можно квотить только одинарную кавычку (если использовать для ограничения строк только их). Но здесь я не уверен.
 

DiMA

php.spb.ru
Команда форума
да, крайне редко когда могут ответить на этот вопрос .-)
да, в чем толк экранировать лишние символы, если они не создают проблемы

И самое главное - нахрена нужны 2 доп функции, когда на сервере в трезвом уме никто эту китайскую кодировку никогда не поставит? Все юзают либо ANSI, либо UTF-8. И хакер (так же, если программер в трезвом уме) не сможет изменить кодировку сервера.
 

Вурдалак

Продвинутый новичок
Так это самое, mysql_set_charset() + mysql_real_escape_string() тоже не помогала в случае некоторых некорректных данных (несоответствие той же GBK) даже в сравнительно нестарых версиях MySQL.
 

DiMA

php.spb.ru
Команда форума
Стоп... Вопрос простой - кто в трезвом уме в этой жизни использовал или будет использовать GBK?
 

fixxxer

К.О.
Партнер клуба
GBK хрен бы с ней. А вот с не столь уж экзотичными UCS-2 и UCS-4 кто-нибудь смотрел? :) По идее, там много в каких комбинациях \x27 можно найти.
 

KorP

Новичок
Я на конце не буду6 но с удовольствием почитал/посмотрел бы
 

jonjonson

Охренеть
Я ещё в ЖЖ хотел ответить, что это дело нужное и правильное. Вот только как-нибудь видео выпросить. А то далёк я от народа...
 
Сверху