md5 шифрование пароля пользователя

Хочу реализовать шифрование пароля пользователя.

Делаю следующим образом:

login.php

Для начала не работает JavaScript в onsubmit. Далее …

Не пойму в чем загвоздка.

  • Криво строка формируется.

Помогите, плз.

А чего не шифровать пароль на стороне сервера уже? зачем вам JS вообще?

Quote

link=topic=2419.msg13260#msg13260 date=1243619496]

А чего не шифровать пароль на стороне сервера уже? зачем вам JS вообще?

На самом деле все достаточно просто и сделано это ради защиты от взлома без использования защищенных соединений.

Алгоритм:

  1. при формировании формы на сервере формируется случайная переменная ($password2), сохраняется в сессии и передается в форму, когда пользователь вводит пароль (чтоб он небыл доступен для прослушивания) и нажимает отправить JS скрипт его шифрует md5 методом:

таким образом хакер даже увидев значение переменной не сможет ее подобрать (за счет той случайной переменной password2);

  1. при проверке что делается:

если пришедшее значение password2 равно

значит все ок.

Надеюсь понятно изложил  :)

ssl рулит) долой велосипеды :)

А вобще по теме,

у тебя фаербаг стоит? если onsubmit не выполняеться значит смотри чем сыпит фаербаг в ошибках js

Quote

link=topic=2419.msg13269#msg13269 date=1243625275]

ssl рулит) долой велосипеды :)

А вобще по теме,

у тебя фаербаг стоит? если onsubmit не выполняеться значит смотри чем сыпит фаербаг в ошибках js

Привет, друг!

Фаербаг стоит - обязательно. кричит LoginForm не определен.

Пришла мысль попробую сделать на jQuery.

по поводу ssl - как?

браузер и клиент обмениваются информацией по https - создавая защищенное соединение…подробнее вот здесь http://ru.wikipedia.org/wiki/SSL

Я разобрался.

Переписываем:

И добавляем jQuery код в login.php

и ошибка закралась в SiteController

Но осталась непонятная проблема.

код:

выполняется, а Yii::app()->user->isGuest выдает true

Quote

браузер и клиент обмениваются информацией по https - создавая защищенное соединение...подробнее вот здесь http://ru.wikipedia.org/wiki/SSL

Спасибо за информацию, но… сколько с этим делом проблем… В печьку!

JS форевер!

Quote

Но осталась непонятная проблема.

код:

выполняется, а Yii::app()->user->isGuest выдает true

Теперь все работает!

а проблема была в том, что я закрывал сессию в UserIdentity

Всем спасибо!

Кому надо такое решение - обращайтесь - покажу и подскажу.

используя js, Вы выносите часть Вашей логики на сторону клиента…т.е. теоретически, злоумышленник знает алгоритм проверки пароля (после анализа js кода) - это не совсем гуд! ИМХО конечно!

Может я чего-то не понимаю, но накой черт генерить на сервере некий hash (password2), передавать его клиенту в js, там же делать шифрацию md5 и потом отправлять это на сервер и все сверять… че за бредятина?

имхо не проще ли при регистрации юзеру присваивать некий salt (в буллетине это 3 случаных символа), далее в поле password в базе храниться md5(md5(password)+salt) и не делать никаких выносов логики на сторону клиента?

Quote

используя js, Вы выносите часть Вашей логики на сторону клиента....т.е. теоретически, злоумышленник знает алгоритм проверки пароля (после анализа js кода) - это не совсем гуд! ИМХО конечно!

Даже зная алгоритм злоумышленник ловит каждый раз разный пароль password2. Т.е. пароль остается неизвестен. Что и требовалось.

Quote

Может я чего-то не понимаю, но накой черт генерить на сервере некий hash (password2), передавать его клиенту в js, там же делать шифрацию md5 и потом отправлять это на сервер и все сверять.. че за бредятина?

Тут вся соль в том, что пароль пользователя невозможно перехватить! Точнее перехватить можно, но этот пароль действительный только 1 раз.

Quote

имхо не проще ли при регистрации юзеру присваивать некий salt (в буллетине это 3 случаных символа), далее в поле password в базе храниться md5(md5(password)+salt) и не делать никаких выносов логики на сторону клиента?

И таким образом что мы получаем?

По открытому каналу идет информация о пароле. Злоумышленник перехватывает ее и знает, что надо отправить на входной скрипт, чтобы стать … Васей, Петей, или еще кем-то (даже администратором).

Может я что-то не понимаю?

снова ИМХО! Вы наверное хотите сделать что - то типа этого (отрывок из документации):

Quote

To prevent CSRF attacks, it is important to abide to the rule that GET requests should only be allowed to retrieve data rather than modify any data on the server. And for POST requests, they should include some random value which can be recognized by the server to ensure the form is submitted from and the result is sent back to the same origin.

Yii implements a CSRF prevention scheme to help defeat POST-based attacks. It is based on storing a random value in a cookie and comparing this value with the value submitted via the POST request.

By default, the CSRF prevention is disabled. To enable it, configure the CHttpRequest application component in the application configuration as follows,

And to display a form, call CHtml::form instead of writing the HTML form tag directly. The CHtml::form method will embed the necessary random value in a hidden field so that it can be submitted for CSRF validation.

Но js для этого явно не нужен!

xomaa, не, он не это хочет сделать… суть его махинаций с md5 шифрованием в js я понял… но все равно тут стоит сказать одну вещь - захотят, сломают и такой алгоритм.

та это не какой не алгоритм. это фича :)

Алгоритм, фича… называй как хочешь))

Хотите чтобы пароль не свистнули в момент передачи - юзайти ssl протокол)) а извращаться и вытаскивать в js md5 - имхо не лучший  вариант

Quote

Алгоритм, фича.. называй как хочешь))

Хотите чтобы пароль не свистнули в момент передачи - юзайти ssl протокол)) а извращаться и вытаскивать в js md5 - имхо не лучший  вариант

Согласен!

Quote

Quote

Алгоритм, фича.. называй как хочешь))

Хотите чтобы пароль не свистнули в момент передачи - юзайти ssl протокол)) а извращаться и вытаскивать в js md5 - имхо не лучший  вариант

Согласен!

Спорить не буду, но в этом случае защита лучше чем никакой, а взлом возможен с использованием CSRF (спасибо xomaa), но тут уже на помощь приходит капча.

Rsol, тогда по пунктам:

  1. если ты хочешь сделать защиту форм, то тут xomaa прав, юзай csrf защиту в yii

  2. если ты хочешь защитить пароль юзера от перехвата (хотя такое думаю редко кто будет делать, разве что админ на роутере или злобный троян на его компе), то имхо лучше сделать ssl протокол.

  3. md5 шифрация на стороне клиента, думаю это последний вариант, так как не есть "красивое программирование"

Quote

Rsol, тогда по пунктам:
  1. если ты хочешь сделать защиту форм, то тут xomaa прав, юзай csrf защиту в yii

  2. если ты хочешь защитить пароль юзера от перехвата (хотя такое думаю редко кто будет делать, разве что админ на роутере или злобный троян на его компе), то имхо лучше сделать ssl протокол.

  3. md5 шифрация на стороне клиента, думаю это последний вариант, так как не есть "красивое программирование"

Digital God, наверное ты прав, но не могу себя пересилить и разобраться с ssl. Плюс надо сертификат покопать…