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

Форум PHP

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

 

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

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

тема: Шифрование паролей и электронных адресов
 
 автор: Yaeaeo   (11.11.2012 в 02:41)   письмо автору
 
 

Имеется база данных, в которой пароли и e-mail пользователей хранятся как есть. Думаю, перевести на зашифрованные варианты.

Почитал про md5, sha1, crypt. Подскажите, что выбрать?

  Ответить  
 
 автор: Valick   (11.11.2012 в 09:12)   письмо автору
 
   для: Yaeaeo   (11.11.2012 в 02:41)
 

ну пароль нужно хешировать, а вот e-mail именно шифровать если есть такая необходимость, хотя если e-mail используется исключительно в качестве логина, то можно и его хешировать
у каждого метода есть свои плюсы и минусы, что выбрать это уже вам решать

  Ответить  
 
 автор: Sfinks   (11.11.2012 в 09:21)   письмо автору
 
   для: Valick   (11.11.2012 в 09:12)
 

Что значит "Нужно" хешировать? Я все пароли храню зашифрованными по алгоритму Rijndael-256.

  Ответить  
 
 автор: Valick   (11.11.2012 в 09:33)   письмо автору
 
   для: Sfinks   (11.11.2012 в 09:21)
 

мне нужно отвечать на вопрос или вы в целях похвастаться?

  Ответить  
 
 автор: Sfinks   (11.11.2012 в 09:57)   письмо автору
 
   для: Valick   (11.11.2012 в 09:33)
 

Я в целях поправить Вас. Т.к. ваше утверждение не есть аксиома.

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

  Ответить  
 
 автор: Yaeaeo   (12.11.2012 в 03:31)   письмо автору
 
   для: Yaeaeo   (11.11.2012 в 02:41)
 

Я понимаю — sha1 безопаснее будет, так как использует 40 символов для шифровки, а не 32, как md5?

  Ответить  
 
 автор: Valick   (12.11.2012 в 08:57)   письмо автору
 
   для: Yaeaeo   (12.11.2012 в 03:31)
 

это не совсем так, 40 или 32 символов вы получаете на выходе
и сложность подбора пароля зависит в основном от сложности самого пароля
если огромная база уже прохэшированных паролей, если придуманный вами пароль содержится в этой базе, то дело "труба"

  Ответить  
 
 автор: Yaeaeo   (13.11.2012 в 00:35)   письмо автору
 
   для: Valick   (12.11.2012 в 08:57)
 

Что же, нужно проверять, не используется ли точно такой же пароль уже у кого-либо из пользователей, и, вслучае чего, предложить (в качестве ошибки ввода пароля) выбрать другой?

Пример.

Запись пользователя:
<?php
$password 
$_POST 'password' ];
$time date 'Y' ).date 'm' ).date 'd' ).date 'H' ).date 'i' ).date 's' );
mysql_query ' INSERT INTO `users` SET `id` = NULL , .. , `password` = "'.md5 $password.$time ).'" , `time` = "'.$time.'" ' );
?>

Авторизация и проверка пароля:
<?php
$email 
$_POST 'email' ];
/*
Ищем пользователя по адресу электронной почты, чтобы получить одну запись с его time ($searchUserTime) и паролем ($searchUserPassword).
Если пользователь найден с таким e-mail'ом, то идём дальше.
*/
$password $_POST 'password' ];
/*
Ищем в базе данных MySQL значение, где:
*/
md5 $password.$searchUserTime ) == md5 $searchUserPassword.$searchUserTime );
?>

  Ответить  
 
 автор: Sergeich   (13.11.2012 в 13:02)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 00:35)
 

Помимо того, что пароль совпадает с паролем другого пользователя, нужно еще обязательно выводить логин этого пользователя!

  Ответить  
 
 автор: Yaeaeo   (13.11.2012 в 22:50)   письмо автору
 
   для: Sergeich   (13.11.2012 в 13:02)
 

Не понял Вашей мысли, простите.

  Ответить  
 
 автор: Valick   (13.11.2012 в 23:14)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 22:50)
 

Просто человек ответил не вникая в тему

  Ответить  
 
 автор: Yaeaeo   (14.11.2012 в 17:13)   письмо автору
 
   для: Valick   (13.11.2012 в 23:14)
 

Нет, но что-то по теме он задел )

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 17:19)   письмо автору
 
   для: Yaeaeo   (14.11.2012 в 17:13)
 

Это был сарказм.

  Ответить  
 
 автор: Sergeich   (13.11.2012 в 23:22)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 22:50)
 

А что же здесь не понятного? НИКОГДА НЕЛЬЗЯ проверять пароль на существование и тем более сообщать в случае совпадения об этом посетителю. На каждом форуме можно узнать список посетителей, узнав, что такой пароль кем-то используется, можно просто их всех перебрать. Здесь элементарная математика. При длине пароля в 8 символов количество вариантов будет равно 8 в 96 степени, количество пользователей будет всегда меньше, поэтому выполняя такую проверку и показывая ее результат пользователю, Вы подвергаете своих посетителей потенциальной угрозе взлома их аккаунтов.

  Ответить  
 
 автор: Sfinks   (13.11.2012 в 23:40)   письмо автору
 
   для: Sergeich   (13.11.2012 в 23:22)
 

> будет равно 8 в 96 степени
А не 96 в 8-ой?
И почему именно 96?
Но в любом случае, это больше чем количество пользователей.

  Ответить  
 
 автор: Sergeich   (13.11.2012 в 23:53)   письмо автору
 
   для: Sfinks   (13.11.2012 в 23:40)
 

>> будет равно 8 в 96 степени
>А не 96 в 8-ой?
>И почему именно 96?
>Но в любом случае, это больше чем количество пользователей.

Да, ошибся - 95:
47*2 - количество возможных символов с учетом регистра плюс 1 - пробел.
Если пароль состоит из 8 символов, то 8 в 95 степени. Точно так же как одним байтом (8 битов) можно передать 256 символов максимум.
2 в 8 степени = 256.

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 10:11)   письмо автору
 
   для: Sergeich   (13.11.2012 в 23:53)
 

2 в 8 степени = 256, потому что в двоичной системе 255 это 11111111 (возможных символов 2, знаков 8), но не 8^2 (64)
точно также
10^3 = 1000, потому что в 10-чной системе 999 (возможных символов 10, знаков 3), но не 3^10 (59049)
точно также в пароле из 8ми символов
95^8, потому что с вашим набором символов система у вас получается 95-чная, т.е. по аналогии возможных символов 95, знаков 8, НО НЕ 8^95

  Ответить  
 
 автор: Yaeaeo   (14.11.2012 в 17:15)   письмо автору
 
   для: Sfinks   (14.11.2012 в 10:11)
 

Ребят, ребят. Спокойнее )

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 17:18)   письмо автору
 
   для: Yaeaeo   (14.11.2012 в 17:15)
 

Да никто и не нервничал. С чего вы взяли?

  Ответить  
 
 автор: Yaeaeo   (15.11.2012 в 14:42)   письмо автору
 
   для: Sfinks   (14.11.2012 в 17:18)
 

Да я ведь так, шучу )

  Ответить  
 
 автор: Valick   (13.11.2012 в 15:32)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 00:35)
 

Что же, нужно проверять, не используется ли точно такой же пароль уже у кого-либо из пользователей
нет
это делать нельзя ни в коем случае
слабый пароль это пароль типа даты рождения 1965 например и украв из базы хеш такого пароля хакер просто сравнит украденный хеш со своей базой хешей и со 100% вероятностью найдет там необходимый "пароль", а вот хеша для такой строки uyweuirt7we98wrjkhw76eDF453V898joj, там вряд ли найдется

  Ответить  
 
 автор: Yaeaeo   (13.11.2012 в 22:49)   письмо автору
 
   для: Valick   (13.11.2012 в 15:32)
 

Вы также, как я, скорее всего, видите среди знакомых и друзей, какие у них пароли. Никогда не видел нигде uyweuirt7we98wrjkhw76eDF453V898joj паролей.

  Ответить  
 
 автор: Sergeich   (13.11.2012 в 23:30)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 22:49)
 

>Вы также, как я, скорее всего, видите среди знакомых и друзей, какие у них пароли. Никогда не видел нигде uyweuirt7we98wrjkhw76eDF453V898joj паролей.
$sB7.uM0cD!fN*9% - этим паролем я пользовался еще неделю назад на личном ноутбуке. Меняю каждый месяц. Быстро ввести его при старте системы не проблема, учитывая, что я латиницей набираю со скоростью более 350 символов в минуту (кириллицей, правда, значительно хуже и результат почему-то не улучшается со временем). Проблема - запомнить, но это проблема 20 минут.

  Ответить  
 
 автор: Yaeaeo   (13.11.2012 в 22:49)   письмо автору
 
   для: Valick   (13.11.2012 в 15:32)
 

Вы также, как я, скорее всего, видите среди знакомых и друзей, какие у них пароли. Никогда не видел нигде uyweuirt7we98wrjkhw76eDF453V898joj паролей.

  Ответить  
 
 автор: Yaeaeo   (13.11.2012 в 22:51)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 22:49)
 

Создатели форума, поставьте на проверку текущее сообщение с последним, чтобы повторные случайные нажатия на кнопки на отправлялись )

  Ответить  
 
 автор: Valick   (13.11.2012 в 23:11)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 22:51)
 

повторных сообщений на этом форуме не так уж и много ;)

  Ответить  
 
 автор: Valick   (13.11.2012 в 23:30)   письмо автору
 
   для: Yaeaeo   (13.11.2012 в 22:49)
 

Вы просто не в ту сторону смотрите
Я вам лишь сказал про сложность пароля от которой зависит узнает ли хакер ваш пароль если "сольет" с сервера бд содержащую хеши паролей.
У нормального уважающего себя хакера есть база данных паролей например пару тройку миллионов паролей (так называемый "словарь+") уже давно прохешированных различными алгоритмами и "соленьями".
Украв хеш пароля хакер не вычисляет, а просто делает поиск по базе данных.
И пароль состоящий из 4-х цифр (а тем более год рождения диапазон которых гораздо меньше) или пароль popcorn в этой базе есть 100%, а вот пароля который я вам показал выше придумав естественно от балды 99.9% там нет, соответственно и его хеша в разных вариациях там нет.

  Ответить  
 
 автор: Yaeaeo   (14.11.2012 в 01:00)   письмо автору
 
   для: Valick   (13.11.2012 в 23:30)
 

Хе, согласитесь, но ведь не мне решать, какой там будет пароль )

Мне лишь приходится хоть как-то содействовать пользователю в безопасности его безолаберности.

  Ответить  
 
 автор: Valick   (14.11.2012 в 09:41)   письмо автору
 
   для: Yaeaeo   (14.11.2012 в 01:00)
 

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

  Ответить  
 
 автор: Yaeaeo   (14.11.2012 в 17:16)   письмо автору
 
   для: Valick   (14.11.2012 в 09:41)
 

Предупреждений не пишу, и так в сети полно их, а длину минимум ограничиваю пятью символами, максимум пятьдесят.

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

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