Author Topic: Помогите с обработкой форм с предварительным шифрованием в PHP  (Read 9326 times)

0 Members and 1 Guest are viewing this topic.

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Есть форма с полями login, password, salt и кнопка submit
Что-то ничего в голову не приходит... Возможно сильно устал и мозги не соображают - быстрое гугленье не помогло, а обработку регистрации нужно закончить быстро...

Задача: нужно перед отправкой зашифровать пароль с помощью md5

Как зашифровать пароль на javascript я знаю, но после передачи полей результат не совпадает с работой функции md5() в php  А хотелось бы проверку сделать на стороне сервера, а не клиента...

[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline Diver

  • Hero Member
  • *****
  • Posts: 790
  • Karma: +2/-0
Т.е. чел вводит в поле пароль свой, потом нажимает отправить и во время отправки на стороне клиента средствами javascript пароль шифруется по md5 и отсылается серверу?!?! А зачем так извращаться? В кач-ве веб сервера стоит 386ой которому тяжко посчитать md5? Просто интересно... И еще, что вы будете делать если кто-то отключает яваскрипт у себя?
MCP

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: stranger
Задача: нужно перед отправкой зашифровать пароль с помощью md5

Как зашифровать пароль на javascript я знаю, но после передачи полей результат не совпадает с работой функции md5() в php  А хотелось бы проверку сделать на стороне сервера, а не клиента...
гугление должно помочь. я такую штуку находил и пользовал, но было это давно, лет уже семь как, если не больше...
имхо проще просто делать это через https.
опять-таки, если еще юзерам сертификаты раздать (на USB-токенах) и сказать серверу, чтобы проверял клиента, то твоя форма отдыхает, а юзер получает кайф - вставил токен - вошел, не вставил - нет...
хотя не без геморроя, конечно... но надега на уровне!

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Quote from: Diver
Т.е. чел вводит в поле пароль свой, потом нажимает отправить и во время отправки на стороне клиента средствами javascript пароль шифруется по md5 и отсылается серверу?!?! А зачем так извращаться? В кач-ве веб сервера стоит 386ой которому тяжко посчитать md5? Просто интересно... И еще, что вы будете делать если кто-то отключает яваскрипт у себя?
Да так и делается... А причина очень простая - нешифрованные пароли через формы вообще опасно передавать, особенно если, эти пароли важны...
Если кто-то отключит поддрежку - это будут его проблемы... Я, возможно, откажусь принимать пароль или просто передам его нешифрованным...

Я кстати дурканул - работать меньше надо... Если я шифрую на стороне клиента, то зачем мне еще на стороне сервера шифровать - в базу загнал и все и потом просто с базой связываться и сравнивать...
Правда яваскриптом шифруется только 64битным ключем...
Кстати, если я такой зашифрованный пароль, потом еще шифрану 128-битным ключом - стойкость увеличится или нет?

Quote from: never hood
гугление должно помочь. я такую штуку находил и пользовал, но было это давно, лет уже семь как, если не больше...
имхо проще просто делать это через https.
опять-таки, если еще юзерам сертификаты раздать (на USB-токенах) и сказать серверу, чтобы проверял клиента, то твоя форма отдыхает, а юзер получает кайф - вставил токен - вошел, не вставил - нет...
хотя не без геморроя, конечно... но надега на уровне!
Еслибы я мог передавать по https, то так бы не извращался - нет у меня доступа к https...
« Last Edit: April 11, 2007, 22:35:21 by stranger »
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline MaksT

  • Jr. Member
  • **
  • Posts: 62
  • Karma: +0/-0
    • ithz.ru
Интересно а как ты хотел сделать обработку формы средствами php на стороне клиента?

Если данные все равно будут передаваться на сервер и там обрабатываться, то не вижу тайный смысл вашего решения.

Передавай данные формы на сервер, и там уже обрабатывай средствами php: $password = md5($_POST['password']);
Думаю, тебе это известно

Offline Diver

  • Hero Member
  • *****
  • Posts: 790
  • Karma: +2/-0
Ну если шифрованный яваскриптом пароль еще раз шифрануть на стороне сервера, то впринципе стойкость увеличиться. Хотя в вашем случае шифрование ява-скриптом никакой стойкости не даёт.
Ведь вы всё равно пароль шлете в открытом виде. Вам также этот перехваченный md5 пароль пошлют и войдут без проблем.
Вам может помочь:
1) HTTPS
2) Сертификаты
Больше я не вижу никаких выходов.
P.S. Кстати можете шифровать и 160битным ключом: http://pajhome.org.uk/crypt/md5/ Но еще раз повтарю - это вам ничего не даёт кроме гемороя. Та же самая передача в открытом виде...
« Last Edit: April 11, 2007, 22:53:32 by Diver »
MCP

Offline MaksT

  • Jr. Member
  • **
  • Posts: 62
  • Karma: +0/-0
    • ithz.ru
Quote
Та же самая передача в открытом виде...
Если зашифровать на стороне клиента пароль, то это как раз скроет пароль от перехвата (при условии, что он больше 7 знаков и не из словаря. Желательно буквы в РаЗноМ регистре, цифры и спецсимволы)

По стойкости что md5, что SSL приблизительно одинаковы

Использование защищенного протокола с проверкой подлинности клиента - это очень хорошее решение, однако это гораздо труднее реализовать, если хостишься не на своем железе. Поскольку для использования сертификата сервера, необходимо вносить изменения в конфиг Апача. А при нескольких сайтах, использущих SSL на одном сервере, придется вообще хитро их прикручивать. И не каждый администратор хостинга пойдет на это.
« Last Edit: April 11, 2007, 23:29:07 by MaksT »

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Quote from: MaksT
Интересно а как ты хотел сделать обработку формы средствами php на стороне клиента?
Я же говорю, глюканул  Отдыхать нужно почаще...

Quote
Ну если шифрованный яваскриптом пароль еще раз шифрануть на стороне сервера, то впринципе стойкость увеличиться. Хотя в вашем случае шифрование ява-скриптом никакой стойкости не даёт.
Ведь вы всё равно пароль шлете в открытом виде. Вам также этот перехваченный md5 пароль пошлют и войдут без проблем.

Ну не совсем так - есть решения позволяющие этого избежать (не зря же я salt еще ввел)...

Quote
Вам может помочь:
1) HTTPS
2) Сертификаты
Больше я не вижу никаких выходов.
P.S. Кстати можете шифровать и 160битным ключом: http://pajhome.org.uk/crypt/md5/ Но еще раз повтарю - это вам ничего не даёт кроме гемороя. Та же самая передача в открытом виде...
Как я уже писал к https доступа нет, поэтому этот вариант отпадает...
P.S. Так я этот сайт и пользовал  Просто отталкивался не от тех предположений - нужно будет в доках по php порыться на предмет какой там ключ...
P.P.S. На этом же сайте, кстати описаны возможные способы защиты от простой отправки хеша... И дошифровка мне тут пожалуй поможет...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: stranger
Как я уже писал к https доступа нет, поэтому этот вариант отпадает...
существует, кстати, интересная схема аутентификации через SMS.
сайт не помню, но используется в коммерческих реализациях.
короче, юзер при регистрации указывает свой телефон, а при логине ему разовый пароль высылается SMS-кой... это конечно, мое упрощенное описание, но все примерно так...
есессно, нужен шлюз к SMS...

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Quote from: never hood
существует, кстати, интересная схема аутентификации через SMS.
сайт не помню, но используется в коммерческих реализациях.
короче, юзер при регистрации указывает свой телефон, а при логине ему разовый пароль высылается SMS-кой... это конечно, мое упрощенное описание, но все примерно так...
есессно, нужен шлюз к SMS...
Ага знаем мы эти SMS - много сообщений теряется...
Интересно, сколько запросят операторы за возможность приема сообщений с операторов по всему миру...
Вариант конечно интересный, но он тоже отпадает...

Отдохнув слегка, сегодня примусь за написание с новыми силами... Хотя пар сегодня многовато...
« Last Edit: April 12, 2007, 10:38:27 by stranger »
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]