Боб использует веб-приложение для достижения чего-то. А:
- Его браузер находится на диете, поэтому он не поддерживает cookie.
- Веб-приложение является популярным, он имеет дело с большим количеством пользователей в данный момент - он должен хорошо масштабироваться. До тех пор, пока сохранение сессии будет налагать ограничение на количество одновременных подключений и, конечно же, принесет незначительное ограничение производительности, нам может понравиться иметь система без сеанса:)
Некоторые важные примечания:
- у нас есть транспортная безопасность (HTTPS и ее лучшие друзья);
- за шторами веб-приложение делегирует множество операций внешним службам, на текущем имени пользователя (эти системы признают Боб одним из своих пользователей) - это означает, что мы должны направить им учетные данные Боба.
Теперь, как мы аутентифицируем Боба (по каждому запросу)? Что было бы разумным способом реализовать такую вещь?
- играя в теннис с полномочиями через скрытые поля HTML-формы... в шаре содержатся учетные данные (имя пользователя и пароль), а две ракеты - браузер и Интернет соответственно. Другими словами, мы можем передавать данные туда и обратно через поля формы, а не через файлы cookie. При каждом веб-запросе браузер отправляет учетные данные. Хотя, в случае одностраничного приложения, это может выглядеть как игра в сквош против резиновой стены, вместо того, чтобы играть в теннис, поскольку веб-форма, содержащая учетные данные, может быть сохранена на всю жизнь веб-страница (и сервер будет настроен так, чтобы не предоставлять учетные данные).
- сохранение имени пользователя и пароля в контексте страницы - переменные JavaScript и т.д. Здесь требуется одиночная страница, IMHO.
- шифрованная аутентификация на основе токенов. В этом случае действие входа в систему приведет к генерации зашифрованного маркера безопасности (имя пользователя + пароль + что-то еще). Этот токен будет возвращен клиенту, и предстоящие запросы будут сопровождаться токеном. Имеет ли это смысл? У нас уже есть HTTPS...
- другие...
- В последнем случае: не делайте этого, храните учетные данные в сеансе! Сессия хорошая. С или без файлов cookie.
Возникает ли в вашей голове какой-либо вопрос о безопасности в Интернете или безопасности, касающийся любой из ранее описанных идей? Например,
- time-outing - мы можем сохранить временную метку вместе с учетными данными (отметка времени = время, когда Боб вошел в его учетные данные). Например. когда СЕЙЧАС - временная меткa > порог, мы можем отклонить запрос.
- Защита межсайтового скриптинга - никоим образом не должна отличаться, не так ли?
Большое спасибо за то, что вы нашли это время:)