2015-01-28 2 views
0

У меня есть сообщение HTTPS, входящее через безопасную форму. Не вдаваясь в длительное объяснение: мне нужно вызвать действие в том же контроллере, который принимает два токена, переданных в качестве параметров. Когда я запускаю Fiddler, я вижу, что этот метод вызывается с параметрами в URL. Мой вопрос: ли это представляет угрозу безопасности? Есть ли более безопасный способ перенаправления внутри одного контроллера?Предоставляет ли RedirectToAction угрозу безопасности?

ответ

0

Да, это создает угрозу безопасности, но его легко смягчить, просто подтвердив, что URL-адреса, которые вы перенаправляете, находятся в пределах того же домена, что и ваш источник.

На самом деле, это на вершине OWASP 10.

A10 - Unvalidated Redirects and Forwards

EDIT:

Я просто понял, что я пропустил "ToAction" часть вопроса, поэтому нет .. Это на самом деле невозможно перенаправить за пределы сайта с помощью RedirectToAction, поэтому для этого не стоит беспокоиться. Однако, если вы используете прямой вход пользователя для подачи в ваш RedirectToAction (и который включает в себя прием почтовых данных, которые вы создаете на другой странице), возможно, злоумышленник может перенаправить на метод, которого вы не ожидали. Тем не менее, это ничем не отличается от пользователя, просто пробуя случайный URL-адрес и нажав на него, или зная URL-адрес и отправляясь на него вручную. Вам необходимо иметь авторизацию для предотвращения доступа к URL-адресам, которые пользователь не имеет разрешения на просмотр.

+0

Спасибо. Я определенно делаю перенаправление в том же домене. Я делаю это в одном контроллере. Значит, я предполагаю, что это безопасно? Из того, что я читал в статье, это так. Я больше беспокоюсь о том, что хакер перехватывает параметры, прошедшие от результатов одного действия, другому. Это что-то, о чем мне нужно беспокоиться? – kickinchicken

+0

@kickinchicken - вы не совсем понимаете. Если вы принимаете вход, который используется при переадресации, вы должны подтвердить, что этот ввод является, по сути, URL-адресом вашего домена. Просто потому, что вы только отправляете URL-адрес из своего домена, это не значит, что вы в безопасности. Вы должны проверить входные данные. –

+0

Я вижу, что ты говоришь Эриком. В перенаправлении вход не используется. Перенаправление статично. Также - и я должен был объяснить это раньше, но это часть процесса SSO. Мы принимаем сообщение формы, выполняем некоторую работу, а затем перенаправляем ее действие. Входы представляют собой два strimg, ни один из которых не перенаправляется. Должен ли я беспокоиться о том, что когда перенаправление на GET происходит, что внешний хакер может перехватить это? – kickinchicken

1

Если исходное действие доступно через HTTPS, то RedirectToAction перенаправит на относительный URL-адрес в том же домене, используя тот же протокол.

Так что, если ваша исходная страница

https://www.example.com/Foo/Bar 

и это перенаправляет на FooBar действия с некоторыми параметрами маршрута:

https://www.example.com/Foo/FooBar/1/2/3 

злоумышленник не может считывать параметры 1/2/3, ни остальной части URL.

Однако, вещи, которые вы должны иметь в виду, являются:

  • Параметры URL будут регистрироваться по умолчанию в браузере (историю), ваш сервер, корпоративных прокси-серверов и, возможно, другими устройствами в сеть по умолчанию.
  • Если пользователь следует за любыми ссылками со своей страницы на другие URL-адреса https, заголовок HTTP referer будет содержать ваш адрес страницы, включая параметры. Однако современные браузеры не отправляют заголовок referer с ссылками http.
  • Если на вашей странице будут представлены другие ресурсы https, это приведет к тому, что браузер отправит заголовок referer с запросом.

По этим причинам, если ваши параметры (1/2/3) являются частными, то вы можете POST эти данные на целевой странице, а не использовать RedirectToAction (что приводит к GET).

Обратите внимание, что вы должны подтвердить, что текущий пользователь имеет доступ к ресурсам, к которым относится 1/2/3 (например, если параметры были идентификатором заказа, вы должны проверить, что пользователь, идентифицированный своими файлами cookie, разрешает им видеть заказ ссылки). Удержание 1/2/3 является полезным только в том случае, если сами параметры чувствительны (например, номер социального страхования).

Обратите внимание, что уязвимость OWASP Top 10 «A10 - Неопределенные перенаправления и форварды» здесь не применяется, так как RedirectToAction может перенаправлять только на другое действие. Если другое действие перенаправляется на пользовательский URL-адрес, тогда вместо него будет уязвимость.

Смежные вопросы