Не используя https, при передачи GET или POST запроса, пароль передается в открытом виде. Шифровать с помощью javascript на стороне клиента с открытым колючем? Есть варианты?
Сделал перед отправкой пароля хеш md5(т.к. в БД хранятся хеши), затем шифрую хеш с помощью OpenSSL и уже зашифрованный пароль передаю ajax-ом на сервер, там расшифровываю и сравниваю хеши. Подход правильный?
А в-третьих, технологически у тебя пароли хранятся в открытом виде, поскольку авторизуешься ты не по паролю, а по хешу. То есть хеш выступает в качестве пароля. Чтобы этого не было, ты не должен хэшировать пароль на клиенте, а шифровать как есть. А на сервере уже получить из него хэш и сравнивать.
FanatPHP: да - так.
Причем еще можно соль добавлять к паролю перед шифрованием. Соль генерить на клиенте. Если она будет фиксированной длины, то от дешифрованной строки на сервере ее можно будет отрезать. Ваще круть.