|
|
|
| Имеется база данных, в которой пароли и e-mail пользователей хранятся как есть. Думаю, перевести на зашифрованные варианты.
Почитал про md5, sha1, crypt. Подскажите, что выбрать? | |
|
|
|
|
|
|
|
для: Yaeaeo
(11.11.2012 в 02:41)
| | ну пароль нужно хешировать, а вот e-mail именно шифровать если есть такая необходимость, хотя если e-mail используется исключительно в качестве логина, то можно и его хешировать
у каждого метода есть свои плюсы и минусы, что выбрать это уже вам решать | |
|
|
|
|
|
|
|
для: Valick
(11.11.2012 в 09:12)
| | Что значит "Нужно" хешировать? Я все пароли храню зашифрованными по алгоритму Rijndael-256. | |
|
|
|
|
|
|
|
для: Sfinks
(11.11.2012 в 09:21)
| | мне нужно отвечать на вопрос или вы в целях похвастаться? | |
|
|
|
|
|
|
|
для: Valick
(11.11.2012 в 09:33)
| | Я в целях поправить Вас. Т.к. ваше утверждение не есть аксиома.
В общем-то, зависит от того, на сколько эти пароли могут кому-либо понадобиться, т.к. хеширование исключает еще и человеческий фактор.
Если речь идет об интернет-банке, или интернет-магазине, или еще чем-то где у пользователей есть финансовый счет и т.п., то лучше все-таки хешировать. Чтобы исключить утечку паролей через админов хостинга.
Если же это простая авторизация - то необходимости нет. | |
|
|
|
|
|
|
|
для: Yaeaeo
(11.11.2012 в 02:41)
| | Я понимаю — sha1 безопаснее будет, так как использует 40 символов для шифровки, а не 32, как md5? | |
|
|
|
|
|
|
|
для: Yaeaeo
(12.11.2012 в 03:31)
| | это не совсем так, 40 или 32 символов вы получаете на выходе
и сложность подбора пароля зависит в основном от сложности самого пароля
если огромная база уже прохэшированных паролей, если придуманный вами пароль содержится в этой базе, то дело "труба" | |
|
|
|
|
|
|
|
для: 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 );
?>
|
| |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 00:35)
| | Помимо того, что пароль совпадает с паролем другого пользователя, нужно еще обязательно выводить логин этого пользователя! | |
|
|
|
|
|
|
|
для: Sergeich
(13.11.2012 в 13:02)
| | Не понял Вашей мысли, простите. | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 22:50)
| | Просто человек ответил не вникая в тему | |
|
|
|
|
|
|
|
для: Valick
(13.11.2012 в 23:14)
| | Нет, но что-то по теме он задел ) | |
|
|
|
|
|
|
|
для: Yaeaeo
(14.11.2012 в 17:13)
| | Это был сарказм. | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 22:50)
| | А что же здесь не понятного? НИКОГДА НЕЛЬЗЯ проверять пароль на существование и тем более сообщать в случае совпадения об этом посетителю. На каждом форуме можно узнать список посетителей, узнав, что такой пароль кем-то используется, можно просто их всех перебрать. Здесь элементарная математика. При длине пароля в 8 символов количество вариантов будет равно 8 в 96 степени, количество пользователей будет всегда меньше, поэтому выполняя такую проверку и показывая ее результат пользователю, Вы подвергаете своих посетителей потенциальной угрозе взлома их аккаунтов. | |
|
|
|
|
|
|
|
для: Sergeich
(13.11.2012 в 23:22)
| | > будет равно 8 в 96 степени
А не 96 в 8-ой?
И почему именно 96?
Но в любом случае, это больше чем количество пользователей. | |
|
|
|
|
|
|
|
для: Sfinks
(13.11.2012 в 23:40)
| | >> будет равно 8 в 96 степени
>А не 96 в 8-ой?
>И почему именно 96?
>Но в любом случае, это больше чем количество пользователей.
Да, ошибся - 95:
47*2 - количество возможных символов с учетом регистра плюс 1 - пробел.
Если пароль состоит из 8 символов, то 8 в 95 степени. Точно так же как одним байтом (8 битов) можно передать 256 символов максимум.
2 в 8 степени = 256. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Sfinks
(14.11.2012 в 10:11)
| | Ребят, ребят. Спокойнее ) | |
|
|
|
|
|
|
|
для: Yaeaeo
(14.11.2012 в 17:15)
| | Да никто и не нервничал. С чего вы взяли? | |
|
|
|
|
|
|
|
для: Sfinks
(14.11.2012 в 17:18)
| | Да я ведь так, шучу ) | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 00:35)
| | Что же, нужно проверять, не используется ли точно такой же пароль уже у кого-либо из пользователей
нет
это делать нельзя ни в коем случае
слабый пароль это пароль типа даты рождения 1965 например и украв из базы хеш такого пароля хакер просто сравнит украденный хеш со своей базой хешей и со 100% вероятностью найдет там необходимый "пароль", а вот хеша для такой строки uyweuirt7we98wrjkhw76eDF453V898joj, там вряд ли найдется | |
|
|
|
|
|
|
|
для: Valick
(13.11.2012 в 15:32)
| | Вы также, как я, скорее всего, видите среди знакомых и друзей, какие у них пароли. Никогда не видел нигде uyweuirt7we98wrjkhw76eDF453V898joj паролей. | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 22:49)
| | >Вы также, как я, скорее всего, видите среди знакомых и друзей, какие у них пароли. Никогда не видел нигде uyweuirt7we98wrjkhw76eDF453V898joj паролей.
$sB7.uM0cD!fN*9% - этим паролем я пользовался еще неделю назад на личном ноутбуке. Меняю каждый месяц. Быстро ввести его при старте системы не проблема, учитывая, что я латиницей набираю со скоростью более 350 символов в минуту (кириллицей, правда, значительно хуже и результат почему-то не улучшается со временем). Проблема - запомнить, но это проблема 20 минут. | |
|
|
|
|
|
|
|
для: Valick
(13.11.2012 в 15:32)
| | Вы также, как я, скорее всего, видите среди знакомых и друзей, какие у них пароли. Никогда не видел нигде uyweuirt7we98wrjkhw76eDF453V898joj паролей. | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 22:49)
| | Создатели форума, поставьте на проверку текущее сообщение с последним, чтобы повторные случайные нажатия на кнопки на отправлялись ) | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 22:51)
| | повторных сообщений на этом форуме не так уж и много ;) | |
|
|
|
|
|
|
|
для: Yaeaeo
(13.11.2012 в 22:49)
| | Вы просто не в ту сторону смотрите
Я вам лишь сказал про сложность пароля от которой зависит узнает ли хакер ваш пароль если "сольет" с сервера бд содержащую хеши паролей.
У нормального уважающего себя хакера есть база данных паролей например пару тройку миллионов паролей (так называемый "словарь+") уже давно прохешированных различными алгоритмами и "соленьями".
Украв хеш пароля хакер не вычисляет, а просто делает поиск по базе данных.
И пароль состоящий из 4-х цифр (а тем более год рождения диапазон которых гораздо меньше) или пароль popcorn в этой базе есть 100%, а вот пароля который я вам показал выше придумав естественно от балды 99.9% там нет, соответственно и его хеша в разных вариациях там нет. | |
|
|
|
|
|
|
|
для: Valick
(13.11.2012 в 23:30)
| | Хе, согласитесь, но ведь не мне решать, какой там будет пароль )
Мне лишь приходится хоть как-то содействовать пользователю в безопасности его безолаберности. | |
|
|
|
|
|
|
|
для: Yaeaeo
(14.11.2012 в 01:00)
| | для этого вводят ограничения на длину пароля (минимум 6 или 8 символов)
и дают рекомендации о небезопасности пароля (проверяя на совсем уж простыне, например состоящие только из цифр),
но лишать возможности пользователя задать пароль 111111 тоже нельзя, тут уж он сам себе злобный буратино | |
|
|
|
|
|
|
|
для: Valick
(14.11.2012 в 09:41)
| | Предупреждений не пишу, и так в сети полно их, а длину минимум ограничиваю пятью символами, максимум пятьдесят. | |
|
|
|