Примечание: я смотрел на этот вопрос: Предотвращение внедрения SQL без подготовленных операторов (JDBC) .И, как я и ожидал ... ответ - использовать готовые заявления.Я нахожусь в другом стечении обстоятельств ... поэтому я хотел бы узнать лучший путь для этого.
Я использую загруженный скрипт (phpsimplechat), где автор написал свой собственный простой слой SQL(обратите внимание: он поддерживает PostgreSQL и MySQL).К сожалению, я провел несколько тестов, и он уязвим для SQL-инъекций.Сценарий делает все, что я хочу, просто с точки зрения возможностей, поэтому я бы хотел его спасти.
К счастью, это открытый исходный код ... но я бы не стал переписывать все SQL-запросы для использования подготовленных операторов в phpsimplechat.Сторонняя библиотека использует свой собственный уровень SQL вместо PDO ... и при этом использует более старый модуль mysql (поэтому я не могу использовать подготовленные операторы. Даже если я изменил mysql -> mysqli, мне придется иметь дело с "dbQuery""слой он положил поверх всего своего кода).Мне НЕ нужен код PostgreSQL, поэтому ответы могут быть специфичными для MySQL.
Я читал, что addlashes недостаточно для защиты от всех попыток SQL-инъекции.Mysql_real_escape_string безопасно для использования?