Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: David SalzerОтветов: 2

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

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

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

  • Вы говорите о более широких доменах DNS или доменах безопасности Windows? AnthonyWJones 02.09.2009

iis

Ответы

Ответ 1 · рейтинг 1 · AnthonyWJones

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

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

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

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

Осторожно

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

Ответ 2 · рейтинг 1 · Vinay Sajip

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы