Хорошо, я новичок в веб-разработке, поэтому я могу ошибаться в некоторых из этих терминов. Я заранее извиняюсь.
У меня возникли проблемы с пониманием различных элементов аутентификации. Кажется, что каждый метод советуется против кого-то, хотя не всегда с ясными причинами. Я создаю веб-приложение для компании, которая будет иметь доступ к базе данных, поэтому я хотел бы убедиться, что она безопасна.
Итак, есть три места, которые я видел обычно для хранения информации.
-
FormsAuthentication.SetAuthCookie(). В нем хранится файл cookie сеанса, который будет отображаться в браузере, и ничто не чувствительно к клиенту. Однако он может хранить только одно значение. Этот ответ stackoverflow показывает способ хранения нескольких значений здесь, но тот, кто его дает, говорит, что не использует его, хотя и не почему.
-
FormsAuthenticationTicket. Я не знаю, где хранится эта информация, но она позволяет использовать простой способ хранения нескольких значений. Для обеспечения безопасности в соответствии с документацией требуется вызвать Encrpty() для хранения и дешифрования() для извлечения. Это кажется расточительным, но что я знаю.
-
Сессия [ "SomeRef" ] = новый CustomObject(). Второй ответ в этом question объясняет, как это сделать, но комментарий к нему называет его опасным, потому что его можно украсть. Это выглядит как лучший метод для меня, потому что информация все еще хранится на сервере и может хранить несколько значений.
Я не могу найти никаких сравнений для этих методов или хороших объяснений по способу "лучшей практики" хранения нескольких фрагментов информации после аутентификации пользователя. Информация - это просто имя пользователя и его userId.