#c_sharp
Есть приложение на подобии чата. На сервере есть бд, где хранятся пароли (хэши) и логины. Как лучше всего организовать залогинивание? Я могу сохранять логин и пароль в бд у пользователя (sqlite), а потом подставлять, но это мне не очень нравится, так как можно легко угнать данные. Можно как-нибудь зашифровать, но зная алгоритм, можно расшифровать. Как лучше всего сделать? Где безопаснее всего хранить? Тот же хром просто надругательство. Пароли шифруются стандартным методом, что позволят без труда их угнать.
Ответы
Ответ 1
В общем виде эта задача неразрешима - любая информация, доступная клиенту, является потенциально доступной злоумышленнику. Можно лишь увеличить затраты потенциального злоумышленника на получение информации. Для начала, неплохой идеей может быть просто base64-преобразование пароля. Куча непонятных буков сама по себе может отпугнуть злоумышленника. Однако даже испуганный злоумышленник может просто скопировать пароль к себе и воспользоваться вашей же программой. Поэтому следующий уровень защиты - шифровать пароль любым симметричным алгоритмом, а ключ хранить в другом месте. В таком случае злоумышленнику придется сначала найти где хранится ключ, чтобы воспользоваться украденным паролем. Последняя линяя защиты - надо хранить вместо пароля специальный токен, выдаваемый сервером после авторизации. С этим токеном может быть связан некоторый минимальный набор прав, необходимый приложению, повышение прав - только через повторный запрос пароля. Таким образом, злоумышленник, укравший токен, сможет писать в чат от имени пользователя - но не сможет, к примеру, сменить ему пароль и тем самым угнать учетную запись окончательно.
Комментариев нет:
Отправить комментарий