Как реализовать собственную аутентификацию\авторизацию для сайта?
Всем привет! Подскажите, пожалуйста, какие могут быть проблемы с безопасностью, если сделать авторизацию следующим образом...
Есть сайт. Клиент написан на angular.js а сервер на node.js. Для авторизации клиент передает на сервер логин и пароль. В ответе от сервера при успешной авторизации приходит md5 hash, назовем его access token. Этот токен хранится на сервере в redis в сессии пользователя. На клиенте токен сохраняется в localstorage.
Все последующие запросы идут с access token в заголовке с id пользователя. Да, еще у токена есть время жизни, если оно истекает то пользователь должен опять отправить логин и пароль для авторизации.
Все запросы идут через https. Какие есть дыры в такой реализации?
Основных проблемы две:
1. Как генерируется токен, хранится и удаляется. Есть ли привязка к IP и др.
2. Угон токена через xss или другим способом, поскольку можно напрямую его читать. Наиболее рациональным подходом будет хранить в куки с флагом httponly. Для параноидальности еще можно разбить токен на две части. Одна в куке, другая отправляется вручную в запросе/заголовке.
Но еще лучше использовать http digest аутентификацию.