Недавно изучал эту тему сам.Я думаю, что к настоящему времени у нас есть несколько проверенных библиотек шифрования JS, которые видят здесь и здесь .
Теперь вопрос в том, где хранить ключ.Хранить его на стороне клиента - это то же самое, что хранить данные вообще без шифрования.И если пользователь будет постоянно вводить ключ, это будет препятствовать достижению цели.
Возможно, вы могли бы попросить сервер генерировать новый ключ всякий раз, когда вы создаете новый сеанс.(Обязательно используйте HTTPS при выполнении этого запроса).Если сеанс истекает, пользователь должен снова ввести имя пользователя / пароль, и он будет зашифрован с использованием нового токена.Чтобы расшифровать ключ, вы должны сделать (безопасный) запрос к вашему серверу (передавая идентификатор сеанса), чтобы запросить ключ, который затем можно использовать для расшифровки имени пользователя и пароля.
Теперь это все еще остается открытымобычные уязвимости, такие как межсайтовый скриптинг или перехват сеанса, но, по крайней мере, пароль пользователя не сохраняется в виде открытого текста на стороне клиента.
Как вы думаете?