Как ограничить домены, которые могут вызывать мою страницу/веб-сервис

У меня есть веб-сервис, который я хочу использовать в нескольких доменах. Однако я хочу ограничить сайты (домены), которые могут получить доступ к моему веб-сервису.

Например, я хочу, чтобы запрос, сделанный страницей сайта www.Site-A.com, выполнялся, а запрос от www.Site-B.com отклонялся.

Есть ли способ сделать это с помощью ASP.NET/IIS?


person David Salzer    schedule 02.09.2009    source источник
comment
Вы говорите о более широких доменах DNS или доменах безопасности Windows?   -  person AnthonyWJones    schedule 02.09.2009


Ответы (2)


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

Если это так, то единственный шанс, который у вас есть, - это потребовать, чтобы запросы доставлялись с заголовком referer (что нормально, но некоторые браузеры позволяют пользователю подавить его). Затем вы можете проверить содержимое заголовка referer в своем коде, чтобы проверить, хотите ли вы продолжить выполнение запроса.

Вы можете проверить referer с помощью этого кода: -

 var referer = new Uri(Request.ServerVariables("HTTP_REFERER"));
 if (referer.Host.ToLower() == "www.site-a.com")
    //Allow access

Осторожно

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

person AnthonyWJones    schedule 02.09.2009
comment
Спасибо, Энтони. Для моей нужды это поможет. Это место, чтобы сказать вам, что я видел ваши ответы на несколько вопросов и получил удовольствие! - person David Salzer; 03.09.2009

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

person Vinay Sajip    schedule 02.09.2009
comment
У меня может быть IP-адрес, но проблема в сайте, который он использует, а не в IP-адресе пользователя. Я отредактировал свой вопрос, чтобы объяснить это. Благодарю вас! - person David Salzer; 02.09.2009
comment
Если это так, не можете ли вы просто найти домен у какого-нибудь поставщика whois? :) - person cwap; 03.09.2009