Аутентификация с AngularJS, управление сессиями и проблемы безопасности с REST Api WS
Я начал разрабатывать веб-приложение с angularJS, и я не уверен, что все правильно защищено (на стороне клиента и сервера). Безопасность основана на одной странице входа в систему, если учетные данные проверены нормально, мой сервер отправляет обратно уникальный токен с пользовательским сроком действия. Все остальные REST API доступны через этот токен. Приложение (клиент) просматривает мою точку входа, например:https://www.example.com/home.html Пользователь вводит учетные данные и получает обратно уникальный токен. Этот уникальный токен хранится в базе данных сервера с помощью AES или других безопасных методов, он не хранится в открытом формате.
С этого момента мое приложение AngluarJS будет использовать этот токен для аутентификации всех открытых REST Api.
Я думаю о временном хранении токена в специальном http-cookie; в основном, когда сервер проверяет учетные данные, он отправляет обратно новый файл cookie Ex.
app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T
Печенье имеетбезопасный а такжеТолько HTTP флаги установлены. Протокол Http напрямую управляет новым cookie и сохраняет его. Последовательные запросы представят cookie с новым параметром, без необходимости управлять им и сохранять его с помощью javascript; при каждом запросе сервер делает недействительным токен, генерирует новый и отправляет его обратно клиенту -> предотвращает повторные атаки одним токеном.
Когда клиент получает статус HTTP401 несанкционированный В ответ от любого REST Api, угловой контроллер очистит все куки и перенаправит пользователя на страницу входа.
Должен ли я рассмотреть другие аспекты? Лучше хранить токен внутри нового cookie или в localStorage? Любые советы о том, как создать уникальный сильный токен?
Редактировать (улучшения):
Я решил использовать HMAC-SHA256 в качестве генератора токена сеанса с 20-минутным сроком действия. Я генерирую случайный 32-байтовый GUID, прикрепляю метку времени и вычисляю HASH-SHA256, предоставляя 40-байтовый ключ. Совсем невозможно получить коллизии, так как срок действия токена весьма минимален.Печенье будет иметьдомен и путь атрибуты для повышения безопасности.Мульти-логины не допускаются.