В Руководстве по PHP есть примечание:
Примечание. Если эта функция не используется для удаления данных, запрос уязвим для SQL Injection Attacks.
- Функция PHP для дезинфекции всех данных
- Что делает bind_param?
- В PHP при отправке строк в базу данных следует позаботиться о незаконных символах с помощью htmlspecialchars () или использовать регулярное выражение?
- Выбор данных из mySQL с использованием идентификатора в URL-адресе
- насколько безопасны подготовленные заявления PDO
Достаточно ли этого для анти-sq-инъекции? Если нет, можете ли вы привести пример и хорошее решение для анти-SQL-инъекций?
mysql_real_escape_string
обычно достаточно, чтобы избежать SQL-инъекции. Это зависит от того, что он является ошибкой, хотя, т. Е. Есть небольшой неизвестный шанс, что он уязвим (но пока это еще не проявилось в реальном мире). Лучшая альтернатива, которая полностью исключает SQL-инъекции на концептуальном уровне, – это готовые заявления . Оба метода полностью зависят от правильности их применения; т. е. ни одна из них не защитит вас, если вы просто все испортите.
Лучшим решением является PDO .
Если вы используете традиционную mysql_query
то достаточно mysql_query
все ваши данные через mysql_real_escape_string.
Насколько я знаю, это надежный способ избежать атак SQL Injection.