Как безопасно перенаправить на страницу реферера?

#c# #asp.net #asp.net-mvc #http #redirect

#c# #asp.net #asp.net-mvc #http #перенаправление

Вопрос:

Я использую следующий код для перенаправления на реферер в моем контроллере:

 return Redirect(this.HttpContext.Request.UrlReferrer.AbsolutePath);
  

Во время сканирования с помощью инструмента безопасности приложения было указано, что приведенный выше код допускает фишинговые атаки.

Веб-приложение принимает управляемый пользователем ввод, который указывает ссылку на внешний сайт, и использует эту ссылку для создания перенаправления. Это позволяет проводить фишинговые атаки.

Есть ли какой-нибудь способ безопасно перенаправить на реферер?

Комментарии:

1. Из интереса, почему вы перенаправляете пользователя обратно на страницу, с которой он пришел?

Ответ №1:

Это звучит как ошибка общего назначения, которая, вероятно, безвредна в вашем случае. Инструмент app sec не понимает, что вы отправляете людей обратно на ту страницу, с которой они пришли, а скорее видит потенциал для вас, чтобы сделать что-то вроде:

 return Redirect(
    is_trusted_site( this.HttpContext.Request.UrlReferrer.AbsolutePath )
    ? sensitiveURL
    : otherURL
);
  

Если перенаправленный URL-адрес изменился в зависимости от содержимого UrlReferrer , то вы можете стать жертвой подделки реферера.

Тем не менее, если вы хотите исправить «ошибку», вы, возможно, можете использовать JavaScript history.back() .

Ответ №2:

Я не вижу никаких проблем с этим, учитывая, что на самом деле вы хотите перенаправить на того, кто размещает ссылку на ваш сайт во всем Интернете. Вы не можете контролировать, как «реферер» попадает в заголовок HTTP. Это может быть законным, это может быть подделано. Если вас это устраивает, я не вижу проблем.

Имейте в виду, что кто-то МОЖЕТ использовать ваш сайт для перенаправления на что угодно, и это открывает возможности для возможных атак. Т.е. Отправьте электронное письмо, которое фактически ссылается на ваш сайт, но в параметре запроса указывает фишинговый сайт.

Для чего вы планируете это использовать?