Как я могу запретить другим доменам указывать на мой домен? - PullRequest
10 голосов
/ 12 июля 2011

Я недавно узнал, что есть другие доменные имена, указывающие на мой сайт (которые не принадлежат мне), и мне было интересно, как люди могут остановить / предотвратить это. Я размещаю это на peer1 с помощью IIS и использую ASP.NET C #.

Могу ли я использовать HttpModule или какой-либо другой код для отклонения доменных имен, которые не являются моими?

Есть ли лучший способ?

Ответы [ 7 ]

5 голосов
/ 12 июля 2011

Вам следует активировать виртуальный хостинг на основе имен и показывать свой реальный веб-сайт только для нужных доменных имен. Для всех остальных имен вы можете отобразить подходящее сообщение об ошибке.

Подробности: Ваш веб-сервер связывается по его IP-адресу. Вы ничего не можете сделать, чтобы остановить это. Любой может сказать: «подключиться к этому IP-адресу». Например, любой может зарегистрировать новые доменные имена, чтобы они указывали на IP-адрес вашего сервера. Однако внутри запроса есть поле Host с именем типа www.example.com.

После получения запроса ваш сервер может выбрать проверку поля Host и доставить различное содержимое в зависимости от этого значения. В простейшем случае сервер полностью игнорирует поле и всегда печатает одно и то же содержимое. Но в более сложной конфигурации, так называемом «виртуальном хостинге на основе имени», сервер выбирает контент в зависимости от имени хоста.

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

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

В Apache это тривиально настроить, просто проверьте их документацию; для IIS я бы не знал, но я думаю, что это одинаково просто.

3 голосов
/ 12 июля 2011

Если вы используете IIS и у вас есть права администратора.Настройте на своем веб-сайте по умолчанию отображение страницы с ошибкой, а затем создайте новый сайт с заголовком узла, соответствующим вашему домену, чтобы он указывал на ваш сайт.

2 голосов
/ 14 ноября 2014

Это моё решение.Это действительно работает быстро и решило мою проблему.

Вставьте этот код в ваш .htacces

RewriteCond %{HTTP_HOST} !^www.higueyrd.com$
RewriteRule ^/?(.*) http://www.higueyrd.com/$1 [QSA,R=301,L]

Просто поместите свой домен.

1 голос
/ 12 июля 2011

В IIS есть настройка под названием bindings , которая позволяет вам выбрать, какие имена хостов будет отвечать вашему веб-сайту. Эта функция позволяет экземпляру IIS размещать несколько веб-сайтов на одном IP-адресе.

Если вы хотите, чтобы ваш сайт работал только для http://example.com/ и http://www.example.com/,, вам следует настроить привязки так, чтобы они работали только для "example.com" и "www.example.com".

Исключением здесь является использование SSL. Если это так, IIS не может определить имя хоста, и вам, скорее всего, придется использовать выделенный IP-адрес для вашего сайта. В этом случае решение user608576 будет работать. Хотя я бы поместил этот код в ваш файл Global.asax:

<%@ Application Language="C#" %>
<script runat="server">
void Application_BeginRequest(Object sender, EventArgs args)
{
    HttpRequest request = HttpContext.Current.Request;
    HttpResponse response = HttpContext.Current.Response;

    if( (request.Url.Host != "example.com") && (request.Url.Host != "www.example.com") )
    {
        response.Clear();
        response.Write("Unauthorized domain name: " + request.Url.Host);
        response.End();
    }
}
</script>
1 голос
/ 12 июля 2011

В качестве временного исправления вы можете сделать это. Может быть при загрузке домашней страницы или BeginRequest.

if(!Request.Url.Host.ToLower().contains("mysite.com")){
  Response.Redirect("error.html");
}
0 голосов
/ 12 июля 2011

если вы хотите обработать код, то сделайте это в Global.asax в BeginRequest, как показано ниже

void Application_BeginRequest(object sender, EventArgs e)
{
    if (!context.Request.Url.Host.ToLower().Equals("www.mydomain.com"))
    {
        context.Rewritepath("/invalidpage.aspx");
    }
}

Другой простой способ - указать заголовки хоста в IIS для вашего сайта.

http://technet.microsoft.com/en-us/library/cc753195(v=ws.10).aspx Примечание. Я пишу на свой мобильный телефон, поэтому учтите орфографические ошибки

0 голосов
/ 12 июля 2011

Если я правильно помню, когда в последний раз проверял свои сайты, я видел функцию, которая останавливала перенаправление на мой домен, если проверял.Я использую Hostso в качестве своего хоста, поэтому проверьте его тестовую cpanel.

Надеюсь, это поможет хотя бы немного:)

Фредрик Вирт

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