Всегда обрабатывал строковые переменные в SQL-запросах ф-ей mysql_real_escape_string(), числовые - intval.
Недавно мне попал в руки скрипт, в котором программист заключает переменные в SQL-запросах просто в { }
Например, такой запрос
SELECT COUNT(*) FROM contacts WHERE user_id = {$user} AND folder_id = {$folder}
насколько безопасен?
Почему переменные не обрабатываются intval? В этом запросе есть SQL-уязвимость?
И ещё несколько вопросов по SQL:
Нужно обрабатывать переменные только пришедшие извне (из GET POST и т.д.) или абсолютно все переменные, которые присутствуют в запросе? (Даже те которые устанавливаются в теле скрипта, например $user_id = 28473;)
И ещё, есть ли разница и какой вариант лучше выбрать?
1) SELECT COUNT(*) FROM contacts WHERE user_id = '".intval($user_id)."'
2)
$user = intval($user_id);
SELECT COUNT(*) FROM contacts WHERE user_id = '".$user."'
Работаю с БД MySQL
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.