Недавно я заметил, что приложение, с которым я консультируюсь, использует незашифрованные файлы cookie. Передний конец (Угловой) регулярно использует следующее, чтобы извлечь идентификатор пользователя:Использование зашифрованных файлов cookie и хранилища сеансов для защиты запросов
var user_id = JSON.parse($cookies.userdata).id;
Я представляю себе сомнительный посетитель может постоянно использовать свой браузер, чтобы изменить их идентификаторы и получить доступ к ресурсам, они не должны. Это огромный красный флаг, и я мог бы использовать некоторую помощь, поддерживающую это. This looks like a solid enough guide, но я не совсем обволакивал разные части.
Что именно хранится в файле cookie, если я использую клиентскую сессию Mozilla? Все, что я хочу? У меня есть API-маршруты, такие как
GET /api/v1/user/:user_id
, чтобы возвращать информацию о пользователе. Если файл cookie зашифрован в браузере, я потеряю возможность доступа к текущемуuser_id
и вызову этот API. Каким будет мой план действий? Создайте прокси-сервер для этого API, который сначала будет дешифровать файл cookie, извлечьuser_id
и , затем позвонитьGET /api/v1/user/:user_id
? Маршруты API защищены функцией, которая проверяет:req.isAuthenticated() === true
, если это вообще помогает.Учитывая приведенное выше, в какой момент сеанс вступает в игру? Предположим, что я храню пользовательские сессии в MongoDB. Мы знаем, что файлы cookie могут хранить только 4kb, но что, если этого достаточно? Какие данные должны содержать в файле cookie и какие данные должны храниться в сеансе пользователя?
Ваши ответы пройдут ДАЛЬНЕЙШИЙ путь к устранению некоторых концепций, которые были для меня черным ящиком.
Рекомендовать плакату также прочитать следующие уязвимости OWASP Top 10: [Нарушена аутентификация и управление сеансом] (https://www.owasp.org/index.php/Top_10_2013-A2-Broken_Authentication_and_Session_Management), [Отсутствует функциональный уровень Контроль доступа] (https://www.owasp.org/index.php/Top_10_2013-A7-Missing_Function_Level_Access_Control), [Незащищенные ссылки на прямые объекты] (https://www.owasp.org/index.php/Top_10_2013-A4- Insecure_Direct_Object_References). Я вполне уверен, что у них есть все. Защита должна быть на стороне сервера, а не на стороне клиента. – TheGreatContini