Как получить IP сервера, который инициировал перенаправление - PullRequest
1 голос
/ 26 июля 2010

Надеюсь, вы могли бы помочь мне со следующим вопросом:

Пользователь нажимает гиперссылку на странице.Сервер A обрабатывает запрос и перенаправляет клиента на URL-адрес на сервере B (точнее, я использую метод Response.Redirect в .NET на сервере A).

Меня попросили ограничить доступ к серверу Bперенаправлять только с сервера А (блокируя IP-адреса, отличные от сервера А).Сначала я подумал, что этого можно достичь с помощью заголовка HTTP referer, однако, похоже, что браузер должен установить для него URL (а не IP), и это не гарантируется.

Я думаю, что нет способа установить HTTP Referer на сервере A в .NET (IP-адрес сервера A)?(моя интуиция - это дыра в безопасности).Итак, мой вопрос: как я могу ограничить доступ к Серверу B для перенаправлений, исходящих с Сервера A?

Любая помощь, высоко ценимая,

Martijn

Ответы [ 3 ]

2 голосов
/ 26 июля 2010

вы можете отправить подписанное сообщение в процессе перенаправления, чтобы сервер B мог проверить, что оно было подписано сервером A

1 голос
/ 26 июля 2010

Позвольте мне рассказать вам, как я понял ваш вопрос: У вас есть набор веб-страниц (p1, p2, p3, p4), распределенных на двух серверах A (p1, p2) и B (p3, p4). клиенты могут щелкать ссылки на страницы p1, p2, которые перенаправляют пользователя на страницы p3, p4 через сервер A на сервер B.

вы хотите, чтобы пользователи были ограничены, чтобы они не могли получить доступ к страницам p3, p4. Другими словами, получить сервер B ограничить доступ к страницам p3, p4, кроме как через перенаправления, генерируемые сервером A.

Если я понял это так, вы можете позволить серверу A добавлять строку запроса к URL-адресу при перенаправлении и позволить серверу B проверять эту строку запроса, и вместо использования Response.Redirect с сервера A вы можете использовать Server.Transfer для скрыть URL от пользователя.

1 голос
/ 26 июля 2010

Нет, вы не можете сделать это таким образом, браузеры устанавливают реферер только в определенных условиях, и клиент может подделать это.

Заголовок реферера - это заголовок запроса, а не заголовок ответа, поэтому сервер А не может установитьthis.

Вам придется что-то делать на стороне сервера (возможно, токен), пока вы контролируете оба сервера, а затем передать токен в качестве параметра в URL-адресе, на который вы перенаправляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...