Mysql Защита от SQL-инъекций в PHP и MySQL

fixxxer

К.О.
Партнер клуба
с 0x это старый кулхацкерский прием пропихнуть строку в нестроковый sql injection (типа id=$id) мимо magic quotes ;)
 

vlav

Новичок
Скажите, а если я еще перед тем, как подключиться к базе, делаю $test=print_r(GLOBALS, true);
Затем проверяю $test на предмет запрещенных слов типа select, update и так далее (ну запрещено у меня на сайте так выражаться) - это гарантирует, что инъекций не будет?
 

vlav

Новичок
Всё равно, что спросить, не будет ли залёта, если перед сексом трусами в воздухе помахать…
Буду очень признателен. если намекнете почему.
SQL инъекция - это в любом случае передача sql кода на сервер через какую то форму на сайте. Это может происходить посредством POST или GET
Мы например сканируем _REQUEST - то есть все переданное на предмет наличия операторов sql типа UNION, SELECT и т.д. и при наличии выходим с ошибкой.
Это не защитит от инъекции?
 

vlav

Новичок
Во-первых, нет.
Во-вторых, если бы мы тут таким способом защищались от инъекций, смог бы ты запостить свой вопрос?
Почему во первых - нет?

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

Фанат

oncle terrible
Команда форума
потому что вариантов слишком много, ты не можешь перечислить их все
 

vlav

Новичок
Да, потенциально не могу догадаться, что там могут изобрести, конечно.
Спасибо!
 

vlav

Новичок
opencart - движок интернет магазина, использует запросы типа $db->query("полный текст запроса") и никаких подстановок параметров. Зато там, насколько я понял, идет проверка POST и GET
Я, глядя на них, у себя использовал такой же принцип.

Что делать, если много кода уже написано в подобном стиле и переделывать его для работы с плэйсхолдерами нереальный труд, чреватый ошибками?
В принципе можно внутри $db->query распарсить запрос, вычленить параметры и подставить их отдельно?
Есть какой то опыт перевода проектов на "правильный код" с плэйсхолдерами?
 

WMix

герр M:)ller
Партнер клуба
Зато там, насколько я понял, идет проверка POST и GET
и на что проверяем? на html символы (вдруг на страничке покажешь), на sql содержание (вдруг в запросе используешь), на возможные консольные команды (вдруг exec понадобится), или на содержание php кода (вдруг eval захочется)?
 

Yoskaldyr

Новичок
Партнер клуба
@vlav Opencart типичный пример жесточайшего говнокода. Не надо там ничего смотреть.
 

AnrDaemon

Продвинутый новичок
Что делать, если много кода уже написано в подобном стиле и переделывать его для работы с плэйсхолдерами нереальный труд, чреватый ошибками?
Переписывать медленно и вдумчиво, исправляя свои идиотские ошибки.
БД врапперы с плейсхолдерами были доступны ещё в прошлом веке.
 
Сверху