Простое XOR сообщение (JavaScript / TCL)?
-
27-09-2019 - |
Вопрос
Мне нужно имя пользователя / пароль, чтобы быть зашифрованным на стороне клиента, прежде чем отправлять его через HTTP GET / POST. И сервер будет декодировать его с TCL перед проверками против базы данных.
В настоящее время я думаю об использовании JavaScript для клиентской стороны. Java Applet также сделает.
Есть ли способ, что я могу легко добиться этого, используя простые XOR или любые другие методы? (Примеры будут высоко оценены)
Я нашел несколько образцов в C / Python / .NET / Java ... но не в JavaScript и TCL.
SSL не является опцией для использования, к сожалению.
Решение
Если SSL не является опцией, то рекомендую следующую схему, которую многие сайты используют вместо SSL:
- На стороне клиента объедините имя пользователя и пароль, затем рассчитайте хеш от него (MD5 - популярный выбор).
- Отправьте имя пользователя и хеш на сервер
- На стороне сервера набрать пароль для этого пользователя из базы данных.
- От имени пользователя и пароля рассчитайте хеш и сравните его с помощью хеша клиента. Если два матча, то пароли совпадают.
- Для дополнительной безопасности добавьте небольшой случайный текст на 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 и хранить его в БД.