Кодирование паролей
Пользователь в браузере заполняет поле "пароль", и, затем, я бы хотел либо передать его уже закодированным в MD5 или как то еще, чтобы его нельзя было перехватиь и, чтобы не осталось следов от незакодированного пароля в log-файлах.
Так вот как это можно сделать и можно ли, а главное нужно ли - может эта проблема надуманная и с ней не стоит париться, а просто кодировать пароль на стороне сервера?
Пожалуйста помогите:
Пользователь в браузере заполняет поле "пароль", и, затем, я бы хотел либо передать его уже закодированным в MD5 или как то еще, чтобы его нельзя было перехватиь и, чтобы не осталось следов от незакодированного пароля в log-файлах.
Так вот как это можно сделать и можно ли, а главное нужно ли - может эта проблема надуманная и с ней не стоит париться, а просто кодировать пароль на стороне сервера?
На мой взгляд, париться не стоит.
Или, лучший вариант, SSL.
Я на стороне сервера кодирую...
Вероятность перехвата меньше, чем взлома БД, где эти самые пароли хранятся... Тем более, до отправки формы пароль нельзя никак закодировать... Разве что, что-нибудь на JS написать, что при отправке будет кодировать, я уже так пробовал - это ненадежно, и уж с md5() никак не сравнится.
что мешает реализовать md5() на javascript? реализация rc4 здесь: http://valyala.narod.ru/ ^)
Смысл кодировать пароль на стороне клиента?? Его перехватят закодированным, и потом таким-же закодированым передадут серверу, успешно получив доступ.
md5 на java script:
http://pajhome.org.uk/crypt/md5/
кстати, ты, и мхо, не совсем прав. пересылать закодированный пароль серверу бессмысленно, ведь сервер, т.е. скрипт, будет сравнивать md5() полученного от клиента пароля с тем md5 что хранится в базе, т.е. перехват хеша пароля вряд ли поможет.
да я пошутил:) пароли не столько перехватывают, сколько БД ломают:)
кстати, ты, и мхо, не совсем прав. пересылать закодированный пароль серверу бессмысленно, ведь сервер, т.е. скрипт, будет сравнивать md5() полученного от клиента пароля с тем md5 что хранится в базе, т.е. перехват хеша пароля вряд ли поможет.
имеем базу с паролями хешироваными с помощью md5
1. пользователь вводит пароль
2. броузер строит хеш пароля
3. броузер передает хеш пароля серверу
4. хакер получает хеш пароля
5. сервер сранивает хеш значание в базе и полученое хеш знаечение и дает доступ
6. хакер отправляет перехваченый хеш пароля
7. сервер сранивает хеш значание в базе и полученое хеш знаечение от хакера и дает ему. доступ
В итоге мы имеет тот же результат, что и без хеширования пароля.
mike смотри. скрипт получает переменную $pass. и сравнивает md5($pass) с тем, что хранится в базе. но если $pass - уже хеш, то md5(хеш) даст фигню. нужна точка входа в скрипт после того, как полученное от пользователя значение пароля хешируется. так?
gufy, злодей :) Таким макаром никакой безопасности. Единственный вариан НЕ ПЕРЕДАВАТЬ ни пароль, ни хэш.
Я сделал так:
Генерируется случайное число на стороне клиента, клиент вволит пароль, логин и сообщение, сообщение шифруется конкатенацией пароля и случайного числа по rc4 плюс к мессаге добавляются случайные вставки и crc. Пароль сбрасывается.
На сервак открытым текстом отправляется логин, случайное число и зашифрованное сообщение. по логину выбираем пассворд, расшифровываем, добавляя случайное число и проверяем на crc. Если что не так, в /dev/null
Случайные вставки гарантируют что два одинаковых сообщения будут различаться в зашифрованном виде, а случайное число, добавляемое к паролю срывает атаку на выделение гаммы rc4.
Если сообщение нафиг не нужно, а надо пройти авторизацию, то тот же сценарий, только сообщение посылается серваком а не пользователем и по получении зашифрованного сверяется.
Спасибо огромное за столь активное обсуждение моего вопроса!!!!!!!!!
На этом вопросе не одна сотня академиков зубы стерла. ;)
На этом вопросе не одна сотня академиков зубы стерла. ;)
PASSWORD(md5($_POST['pass']))? :angel:
и тогда НА пароль перехваченый чуть чуть меньше