Вопрос

Мне нужно имя пользователя / пароль, чтобы быть зашифрованным на стороне клиента, прежде чем отправлять его через HTTP GET / POST. И сервер будет декодировать его с TCL перед проверками против базы данных.

В настоящее время я думаю об использовании JavaScript для клиентской стороны. Java Applet также сделает.

Есть ли способ, что я могу легко добиться этого, используя простые XOR или любые другие методы? (Примеры будут высоко оценены)

Я нашел несколько образцов в C / Python / .NET / Java ... но не в JavaScript и TCL.

SSL не является опцией для использования, к сожалению.

Это было полезно?

Решение

Если SSL не является опцией, то рекомендую следующую схему, которую многие сайты используют вместо SSL:

  1. На стороне клиента объедините имя пользователя и пароль, затем рассчитайте хеш от него (MD5 - популярный выбор).
  2. Отправьте имя пользователя и хеш на сервер
  3. На стороне сервера набрать пароль для этого пользователя из базы данных.
  4. От имени пользователя и пароля рассчитайте хеш и сравните его с помощью хеша клиента. Если два матча, то пароли совпадают.
  5. Для дополнительной безопасности добавьте небольшой случайный текст на Mix пользователь + пароль. Этот случайный текст, ака «соль», должен быть известен как на клиентах, так и на сторонах серверов.

Вот предложение о том, как рассчитать хеш с помощью MD5:

package require md5

proc calculateHash {user password salt} {
    return md5:md5 -hex "$user:$salt:$password"
}

Как это использовать:

set user "johnny"
set password "begood2mama"
set salt "myDog_is_meaner_than_yourDog"

set hash [calculateHash $user $password $salt]

Другие советы

супернободи,

Вы должны рассмотреть альтернативы для хранения паролей в обычных текстах в базе данных. Видеть:

Вместо того, чтобы кодировать пароль в JavaScript, затем декодирование пароля в TCL для сравнения с базой данных вы должны рассмотреть SHA1 HASHING в JavaScript и сохраняя хешитые значения SHA1 в базе данных.

Существует несколько доступных примеров хеш-функции SHA1 в JavaScript (просто Google 'Sha1 JavaScript'). Библиотека TCLLLIB TCL имеет поддержку SHA1.

Как упомянуто Хайву, вы также должны подумать о хешинге / хранении больше, чем просто прямое пароль хэш, но вместо этого используйте что-то вроде Sha1 (имя пользователя + Websitename + пароль). Вы можете рассчитать это на клиенте в JavaScript и хранить его в БД.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top