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