Если вы собираетесь использовать локальное хранилище, зачем хранить учетные данные пользователя или что-либо полученное из них вообще?
То, что я искал в это:
При успешном входе в систему сгенерируйте совершенно случайную строку, не связанную с учетными данными пользователя, и сохраните ее в базе данных вместе с датой истечения срока действия. Затем я передаю эту строку в js для хранения в локальном хранилище.
С тех пор, пока эти учетные данные локального хранилища совпадают с данными базы данных и время ожидания не истекло, я автоматически считаю, что они вошли в систему.
Таким образом, нет риска в отношении раскрытия учетных данных пользователя из локального хранилища. Однако, поскольку эта временная уникальная строка, по существу, функционирует как sessionID, вам все равно нужно будет знать и принимать меры предосторожности против рисков, связанных с перехватом сеанса.
В любом случае, я понимаю, что локальное хранилище так же безопасно, как сервер за вашим сайтом. Под этим я подразумеваю, что локальное хранилище доступно только через скрипты, поступающие через ваш собственный домен, так что вы в безопасности, пока работает только один передний код.