← Назад к проектам

IP согласия, который подделывался

Вместе с согласием на обработку персональных данных фиксируется IP кандидата, и по IP же работает ограничитель частоты запросов. Когда приложение выставили наружу через туннель, включённое доверие к заголовку прокси пережило смену окружения — и любой клиент мог прислать произвольный X-Forwarded-For, подменив записанный IP согласия и заодно размазав ограничитель.

Нашёл это сам при проверке, а не в отчёте исполнителя. Закрыл: заголовку доверяем только при явно заданном числе прокси-хопов, окружение процесса берётся из файла конфигурации, а на старте приложение пишет в лог, с какими настройками поднялось — чтобы такое расхождение было видно сразу.

Проверка: подделанный заголовок без явной настройки в поле IP согласия больше не попадает.

Фактура

  • До этого IP брался из ctx.ip — то есть без разбора цепочки прокси вообще.
  • Заодно в ограничителе появилось вытеснение протухших окон, а GET публичной страницы попал под лимит наравне с записью.
  • Формулировка риска из документации проекта: если число хопов не задать, IP каждого кандидата становится адресом самого туннеля, а ограничитель схлопывается в один общий ключ на всю компанию.