Использование FormsAuthentication в asp.net очень быстро и просто создать систему входа, которая создает cookie для аутентифицированных пользователей:
FormsAuthentication.SetAuthCookie(uniqueUsername, false);
Сопряжен с некоторым кодом в файле Web.Config:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="30" defaultUrl="Dashboard.aspx" protection="All" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
Это приведет к отказу всех запросов до Login.aspx до тех пор, пока пользователь не будет одобрен, а cookie будет создан с помощью вызова метода SetAuthCookie().
Насколько это достаточно безопасно?
Эмпирическое правило, которое я использую, заключается в том, что я не храню никаких данных на клиенте, которые они мне не отправили. Итак, что я сделал в прошлом, это имя пользователя и пароль, используемые в файле cookie, а затем повторно аутентичайте это с каждым запросом.
Там дополнительные накладные расходы при повторной аутентификации каждый раз с этим подходом, но это также означает, что я не храню данные сервера на клиенте.
Мое беспокойство
Меня беспокоит, что с помощью вызова метода SetAuthCookie() имя пользователя хранится на клиентской машине. Возможно ли, если кто-то сломает используемое шифрование и заменит имя пользователя, которое будет сохранено для другого?
Я думаю, что я чересчур параноик и что тип и уровень используемого шифрования адекватны, но я думал, что получу некоторые экспертные материалы по этой теме.