Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка логина и пароля
 
 автор: Abrakadabra   (16.02.2012 в 22:15)   письмо автору
 
 

$result = DB::query("SELECT pass FROM webchat_users WHERE name = '".$name."'");
if($result->num_rows > 0){
$passdb = $result->fetch_object();
if ($passdb['pass'] != $pass) {
throw new Exception('Неверный пароль');
}

Является ли этот код верным? $name и $pass мы получаем от пользователя. Больше интересует вопрос о правильности выборки одного значения из БД, присвоение его к переменной и сравнение

  Ответить  
 
 автор: cheops   (16.02.2012 в 23:09)   письмо автору
 
   для: Abrakadabra   (16.02.2012 в 22:15)
 

Данные в $name подвергаются экранированию перед тем, как войти в состав SQL-запроса?

  Ответить  
 
 автор: Abrakadabra   (16.02.2012 в 23:18)   письмо автору
 
   для: cheops   (16.02.2012 в 23:09)
 

да, если выделять тут текст - то заметно что идет двойная и одинарная кавычки

  Ответить  
 
 автор: cheops   (16.02.2012 в 23:26)   письмо автору
 
   для: Abrakadabra   (16.02.2012 в 23:18)
 

Имеется в виду не кавычки в запросе, а кавычки внутри переменной $name, если пользователь введет в качестве имени
anyname' OR 1 = 1 UNION SELECT 1 FROM webchat_users ORDER BY pass --'
, а в качестве пароля 1, ваш скрипт как отреагирует (я не проверял SQL-инъекцию, это просто демонстрация, есть ли от неё защита)?

  Ответить  
 
 автор: Abrakadabra   (17.02.2012 в 01:47)   письмо автору
 
   для: cheops   (16.02.2012 в 23:26)
 

простите, неправильно понял.
нет никакой обработки переменных нет

  Ответить  
 
 автор: cheops   (17.02.2012 в 12:49)   письмо автору
 
   для: Abrakadabra   (17.02.2012 в 01:47)
 

Тогда в первую очередь нужно защититься от подобных манипуляций, путем экранирования кавычек, например, при помощи функции mysql_escape_string().

PS Только нужно быть осторожным на серверах, где включен режим автоматического экранирования кавычек (так называемый режим "магических кавычек").

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования