Я смотрю на старый код PHP, пытаясь понять, уязвим ли он для SQL-инъекции. Мой босс считает, что это безопасно, но я не решаюсь это принять. Он использует Oracle DB.
Это старый код, и запрос строится посредством конкатенации строк (sprintf). Тем не менее, строка ввода пользователя имеет все дефисы и пробелы, удаленные (через str_replace), и на нее вызывается addlashes(). Есть ли в этом случае какая-либо угроза нападения? Можете ли вы привести пример?
Поскольку код был написан, мы перешли к использованию параметризованных запросов, поэтому в идеале мы обновляем его до этого, но я пытаюсь доказать необходимость этого.
Есть несколько примеров того, как атаковать что-то с помощью addlashes здесь:
Если эта небольшая партия не убедит начальника, то, возможно, настроена на тестовом сервере и создаст инъекцию POC против кода, используя то, что объяснено в приведенных выше ссылках, чтобы продемонстрировать атаку. Таблицы с отрывками довольно драматичны, так как обманывают скрипт, выводя содержимое БД на страницу.