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

Форум PHP

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

 

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

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

тема: Надежна ли будет такая авторизация?
 
 автор: ололош   (10.11.2011 в 02:31)   письмо автору
 
 

1) получаем из формы login, pass
2) делаем запрос в базу по логину, получаем пароль.
3) сравниваем пароль с паролем из базы, все в md5 естестно
4) если пароли совпали ставим три куки login, pass, key, где key это

<?
$key 
md5($login.$pass.$skey);
?>

$skey внутренний ключ.
5) при дальнейшей навигации по сайту запросы в бд не делаем, а сверяем

<?
md5
($_COOKIE['login'].$_COOKIE['pass'].$skey) == $_COOKIE['key]
?>

  Ответить  
 
 автор: Valick   (10.11.2011 в 03:53)   письмо автору
 
   для: ололош   (10.11.2011 в 02:31)
 

это не то что ненадежный вариант, а крайне опасный вариант
в придачу к тому же еще и бессмысленный

  Ответить  
 
 автор: cheops   (10.11.2011 в 12:08)   письмо автору
 
   для: ололош   (10.11.2011 в 02:31)
 

Нет, если пишите пароль в cookie, проходить аутентификацию придется каждый раз. Cookie подделываются на раз два - вас взломают моментально.

  Ответить  
 
 автор: ололош   (14.11.2011 в 01:35)   письмо автору
 
   для: cheops   (10.11.2011 в 12:08)
 

А можете обьяснить все таки чем опасен вариант?
Чтобы подделать куку key, нужно знать как она генерится + секретный ключ для ее генерации.
Т.е. если я буду следить чтобы были три все три куки, причем кука логин + пароль + секретный ключ == key, то как злоумышленник сможет их подделать? ведь он не знает как я ее генерирую.

  Ответить  
 
 автор: cheops   (14.11.2011 в 14:02)   письмо автору
 
   для: ололош   (14.11.2011 в 01:35)
 

Он может ввести свой логин и пароль, причем сделать это на очень большом объеме данных - тогда вероятность взлома сильно повышается. Кроме того, существует еще проблема воровства cookie - если удастся провернуть XSS-инъекцию, хэши могут уплыть. В cookie вообще лучше ничего критичного не хранить.

  Ответить  
 
 автор: Tamplier   (10.11.2011 в 12:24)   письмо автору
 
   для: ололош   (10.11.2011 в 02:31)
 

Пароль и логин не в коем случае нельзя сбрасывать в cookies. По хорошему на каждый вход пользователя, нужно генерировать новый ключ (сгенерированный случайным образом) и сохранять его в сессии (или в куки, но лучше сессия) и БД. Если по каким то причинам ID пользователя и ключ не совпадают, обнулять временный ключ и повторная авторизация.

  Ответить  
 
 автор: Sturmvogel   (14.11.2011 в 02:43)   письмо автору
 
   для: Tamplier   (10.11.2011 в 12:24)
 

А если хранить в куках 2 зашифрованные строки data и token.
data = md5(login.'OLOLO'.md5(password));
проверяет при входе введенные данные не из базы, а куки.
а выборка данных пользователя используя token, который является тем же самым, только с солью
token = md5(login.salt.md5(password)), а соль лежит в базе данных.

можно еще в token запихивать time() входа в систему.

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

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