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

с 0x это старый кулхацкерский прием пропихнуть строку в нестроковый sql injection (типа id=$id) мимо magic quotes ;)
 
Скажите, а если я еще перед тем, как подключиться к базе, делаю $test=print_r(GLOBALS, true);
Затем проверяю $test на предмет запрещенных слов типа select, update и так далее (ну запрещено у меня на сайте так выражаться) - это гарантирует, что инъекций не будет?
 
Всё равно, что спросить, не будет ли залёта, если перед сексом трусами в воздухе помахать…
Буду очень признателен. если намекнете почему.
SQL инъекция - это в любом случае передача sql кода на сервер через какую то форму на сайте. Это может происходить посредством POST или GET
Мы например сканируем _REQUEST - то есть все переданное на предмет наличия операторов sql типа UNION, SELECT и т.д. и при наличии выходим с ошибкой.
Это не защитит от инъекции?
 
Во-первых, нет.
Во-вторых, если бы мы тут таким способом защищались от инъекций, смог бы ты запостить свой вопрос?

Почему во первых - нет?

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

Что делать, если много кода уже написано в подобном стиле и переделывать его для работы с плэйсхолдерами нереальный труд, чреватый ошибками?
В принципе можно внутри $db->query распарсить запрос, вычленить параметры и подставить их отдельно?
Есть какой то опыт перевода проектов на "правильный код" с плэйсхолдерами?
 
Зато там, насколько я понял, идет проверка POST и GET
и на что проверяем? на html символы (вдруг на страничке покажешь), на sql содержание (вдруг в запросе используешь), на возможные консольные команды (вдруг exec понадобится), или на содержание php кода (вдруг eval захочется)?
 
@vlav Opencart типичный пример жесточайшего говнокода. Не надо там ничего смотреть.
 
Что делать, если много кода уже написано в подобном стиле и переделывать его для работы с плэйсхолдерами нереальный труд, чреватый ошибками?
Переписывать медленно и вдумчиво, исправляя свои идиотские ошибки.
БД врапперы с плейсхолдерами были доступны ещё в прошлом веке.
 
Сверху