Я занимаюсь поддержкой и расширением базы PHP-кода, которая началась в 2007 году и использует оригинальный модуль mysql
. Все пользовательские вводятся с помощью литья для значений, которые, как ожидается, будут численными, mysql_real_escape_string()
цитируются с использованием одинарных кавычек для строк, возможно, дополнительно фильтруются через поля in_array()
для ENUM
или array_intersect()
для полей SET
. Все строки с неограниченной строкой передаются через htmlspecialchars()
или htmlentities()
при выводе HTML. Если значение представляет собой внешний ключ, этот ключ сначала проверяется.
Я считаю, что, строго следуя этим процедурам, приложение настолько же безопасно, как и против инъекций и других форм атаки. (бонусные баллы: я прав? Если нет, то что мне не хватает?)
Преобразование этого приложения в mysqli
или PDO было бы довольно большой задачей (и, во избежание случайного поломки, не то, что я хотел бы автоматизировать). Итак, наконец, на мой вопрос: Существуют ли какие-либо конкретные уязвимости, которые не могут быть устранены при использовании старого модуля mysql
, который требует перехода на более новые модули?
Информация о Bounty:
Чтобы быть ясным, я надеюсь на список CVE-номеров или выражение разработчиков PHP о том, что модуль mysql
исправлен против всех известных уязвимостей, таких как дата-дата. Я также предполагаю, что после использования лучших современных методов использования модуля я не предоставляю дополнительные атак. BCP уже включают экранирование данных, взятых из db, прежде чем вставлять их в новый оператор. Продолжение и повторение этого вопроса на самом деле не затрагивает вопрос.