Безопасно ли хранить OTP в сеансе? - PullRequest
0 голосов
/ 26 октября 2009

Я пишу веб-приложение, и для определенных действий пользователю необходимо ввести одноразовый пин-код (OTP) - аналогично большинству банковских веб-сайтов.

Так что мне в основном нужно сгенерировать случайную строку, сохранить ее где-то, отправить ее пользователю и затем проверить введенный пин-код по сравнению с тем, который я сохранил.

Безопасно ли хранить эту сгенерированную строку в объекте ASP Session?

Ответы [ 3 ]

4 голосов
/ 27 октября 2009

Не храните PIN-код. Хешируйте его (один из алгоритмов SHA, желательно с солью) и сохраняйте хеш. Затем сравните хеш того, что пользователь вводит, с хешем, который вы сохранили. Затем, если ваше хранилище (будь то в объекте сеанса, в некоторой базе данных или чем-то еще) взломано, злоумышленник не узнает, что такое PIN-код.

1 голос
/ 26 октября 2009

Просто имейте в виду, что любые данные сеанса в памяти не могут передаваться на другие веб-серверы в веб-ферме, поэтому, если этот сайт нуждается в масштабировании, вы можете отключить OTP от веб-сервера. Если, конечно, вы не пользуетесь липкими сессиями.

0 голосов
/ 26 октября 2009

Сеанс - это серверная коллекция, недоступная на клиенте (в отличие от cookie / viewstate). Он должен быть свободен от манипуляций с клиентом.

Тем не менее, я думаю, вам следует сохранить эти OTP в базе данных и сравнить с ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...