verfaa
Профессор
- Регистрация
- 29 Янв 2007
- Сообщения
- 417
- Реакции
- 49
- Автор темы
- #1
Всегда обрабатывал строковые переменные в 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
Недавно мне попал в руки скрипт, в котором программист заключает переменные в 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
Последнее редактирование: