Open Redirects
1. Введение:
Небезопасные перенаправления и переадресации возможны, когда веб-приложение перенаправляет запрос на URL, заданный при помощи произвольного ввода. Изменив произвольный URL на вредоносный сайт, злоумышленник может успешно запустить фишинговую аферу, украсть учетные данные пользователя и многое другое.
2. Типичный уязвимый код:
Типичный уязвимый код принимает некоторый url-параметр, на который он перенаправляет пользователя.
3. Смягчение последствий
Правило, которое вы, вероятно, уже заметили, если прочитали все остальные темы, заключается в том, что каждый разработчик должен ВАЛИДИРОВАТЬ вводимые данные! Валидация и фильтрация ввода - это методы защиты от любого вида эксплуатации доступного пользователю ввода.
Однако в данном сценарии валидация ввода даже не нужна. Поскольку разработчик обычно знает, куда ему нужно перенаправить пользователя, больше нет необходимости в параметре url, который может быть использован. Мы можем просто зарубить его на корню :)
На вкладке Java следующего кирпичика кода вы найдете способ не хардкорить сам url, а сконструировать его вместо этого.
4. Выводы:
Безопасное использование перенаправлений и переадресаций может быть обеспечено несколькими способами:
Просто избегайте использования перенаправлений и переадресаций.
Если они используются, не допускайте ввода URL-адреса в качестве адресата пользователем.
Если пользовательского ввода не избежать, убедитесь, что вводимое значение действительно, подходит для приложения и авторизовано для пользователя.
Санируйте вводимые данные, создавая список доверенных URL (списки хостов или regex). Он должен быть основан на разрешающем, а не блокирующем списке.
Заставляйте все перенаправления сначала проходить через страницу, уведомляющую пользователей о том, что они уходят с вашего сайта, с четким указанием места назначения, и заставляйте их нажимать ссылку для подтверждения.
Last updated