Достаточные меры для предотвращения SQL-инъекции

программирование php MySQL базы данных sql

Я видел множество "подходов" к защите кода от SQL-инъекций. Но уверен, что addslashes() вполне достаточно. Кто-то считает иначе ? Можете привести вариант значения $login, чтобы получить какую-нибудь строку из БД, не зная его значения ?

$res = mysql_query('select * from users where login = "'.addslashes($login).'"');


Примечание:
2 Vindicar
Может, подскажете какие-нибудь хорошие классы для построения запросов ?
Я встречал только вещи типа
Query()->select(..)->from(...)->where(..., ,,,)
но это мало чем отличается от просто "select from where"

Примечание:
>>> Из очевидных минусов addslashes - наращивание этих самых слешей. Например на \t.

Данные в БД будут заноситься уже без этих добавленных слэшей.
Ответы:
Ну для начала - есть спеиализированные функции вида XXXXX_escapestring(). Лучше использовать их, так как они учитывают (ну, должны учитывать!) все особенности конкретной СУБД.
Используй PDO. Там иньекции невозможны.
Достаточной мерой для предотвращения SQL-инъекции является:
1) правильное экранирование всей вставляемой в запрос информации
2) или использование параметризованных запросов
Подготовленные запросы, PDO.
Согласен с addslashes(), но в случае с кодировкой unicode, надо учитывать спецификации кодировок...


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.