|
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования. |
|
Опции темы |
Сегодня | |||||
|
02.09.2007, 23:41 | #1 | |||
Реноме:
1384
|
Шифрование и расшифровка пароля
Сейчас пишу на php код для одного сайта. Там будет возможность регистрироваться юзерам. Сам код регистрации нового пользователя и т.д. не сложен. Но по-моему мнению, не очень хорошо хранить пароли пользователей в базе данных в открытом виде.
Поискал в гугле...ничего толкового не нашёл... Как сделать так, чтобы при регистрации пароль юзера шифровался, соответственно, уже в зашифрованном виде записывался в базу (как записывать в базу понятно). Ну и соответствующий второй вопрос, как его расшифровывать для проверки, когда пользователь логинится? Если у Вас есть ссылки по теме, то отпишитесь тут пожалуйста. Заранее спасибо! |
|||
02.09.2007, 23:44 | #2 | |||
SEO Специалист
Реноме:
5370
|
Его нельзя делать расшифровываемым. Надо тем-же md5 зашифровать то, что от юзера пришло для залогинивания, и сравнить с тем, что в базе.
добавлено через 1 минуту Да, Вам еще предстоит написать функции защиты от брутфорса на логин и брутфорса на реминдер. добавлено через 3 минуты А от массовой регистрации я кроме капчи (ну и платной регистрации, разумеется) что-то ничего не придумал.
__________________
Коллекционер доменных имен. Последний раз редактировалось pastuhoff; 02.09.2007 в 23:47. Причина: Добавлено сообщение |
|||
02.09.2007, 23:55 | #3 | |||
Реноме:
1384
|
добавлено через 1 минуту
Да, Вам еще предстоит написать функции защиты от брутфорса на логин и брутфорса на реминдер. добавлено через 3 минуты
А от массовой регистрации я кроме капчи (ну и платной регистрации, разумеется) что-то ничего не придумал. К примеру, самое простое: "У Маши было 5 яблок, а Саша взял у неё 3 яблока, одно съел и 2 вернул. Сколько у Маши яблок?" Цифры каждый раз меняем. Не думаю, что ради одного моего сайта СПАМеры и т.п. не будут писать скрипт, который будет подбирать ответы к вопросам. Тем более ответы у вопрсов будет не только цифровыми. |
|||
03.09.2007, 00:03 | #4 | |||
SEO Специалист
Реноме:
5370
|
1 Если не будете использовать ssl - можно найти функцию md5 на js (тут придется-таки почитать мануалы, как ее правильно использовать), хотя это, возможно, уже паранойя.
2 Ограничения могут повлечь за собой невозможность зайти правильному юзеру при атаке. 3 Если у злоумышленника будет задача сделать бяку любыми путями - спасает платная регистрация или какая-нибудь "полиморфная капча". Но бяку он все-равно сделает (ддос). 4 Пожалуйста.
__________________
Коллекционер доменных имен. |
|||
03.09.2007, 00:09 | #5 | |||
Тех. администратор
Реноме:
8716
|
Ага, шифровать надо. В md5 или base64, например. Капчу можно взять простую в инету. Поиск в Яндексе по "картинка для защиты от ботов" и т.п.
Насчет вопросов про яблоки, если понадобится хакеры составят скрипт, который такую капчу разгадает. Лучше всего - это капча, где надо суммировать цифры на картинке и писать ответ. Это ботам сложновато делать, но машину можно научить чему угодно Насчет брутофса, даже не подумал что такое может понадобится. Ну здесь можно сделать так, чтобы если x попыток не удачны, то блок акка на 10 минут. Или еще лучше чтобы войти надо получить пароль новый на почту и никак иначе. Почта, конечно, которая вначале при реге вбита. |
|||
03.09.2007, 00:16 | #6 | |||
SEO Специалист
Реноме:
5370
|
base64 же вроде дешифруется? На всякий случай (стырили дамп базы) все-же лучше md5 (причем не чисто от логина, а с шумом там каким-либо).
добавлено через 2 минуты У меня было такое решение насчет брутфорса: Через n попыток неудачных - меняем пароль и высылаем на мейл, но только если не делали это последние m минут. Т.о. у злоумышленнника на подбор 32х-байтного (или 64х-байтного, к примеру) пароля есть m минут + ящик жертвы не слишком засоряется.
__________________
Коллекционер доменных имен. Последний раз редактировалось pastuhoff; 03.09.2007 в 00:19. Причина: Добавлено сообщение |
|||
03.09.2007, 00:25 | #7 | |||
Тех. администратор
Реноме:
8716
|
base64 - хз, не пользуюсь. Знаю, что md5 не разшифровали.
Ага, если m небольшое, то ящик жертвы будет забит письмами с паролями. Жертва-ламер потом будет жаловать на то, что не один пароль не подходит, хотя на самом деле правильный пасс в самом новом письме |
|||
03.09.2007, 00:30 | #8 | |||
SEO Специалист
Реноме:
5370
|
При m порядка 24 часов (я так полагаю, там время перебора будет далеко не один год, на самом деле ) хакер не успеет подобрать пароль (если он сформирован не тупо), зато юзер сможет войти во время атаки на его акк.
__________________
Коллекционер доменных имен. |
|||
03.09.2007, 00:36 | #9 | |||
Реноме:
1384
|
Нашёл на php.net простейший способ шифровать. Соорудил маленький пример:
файл1 - форма: --------------- <form action="do.php" method="post"> <input name="word" size="80"><br><br> <input type="submit" value="Зашифровать"> </form> --------------- Файл 2 - Собсвтенно сам шифровщик: --------------- <? $show=md5($word); echo "$show"; ?> --------------- Ввожу: "hello" получаю "5d41402abc4b2a76b9719d911017c592" Ввожу "привет" получаю "c2a05319fe7480c9a0cd530b2a3b47dd" Вопрос: это я всё правильно реализовал? Принцип тот? достаточно для того, чтобы внедрять в код будущего сайта? (пока без учёта защиты от брутфорса, спамеров и т.д.) |
|||
Реклама | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
|
|