Как запретить другим доменам указывать на мой домен?

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

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

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

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

if(!Request.Url.Host.ToLower().contains("mysite.com")){
  Response.Redirect("error.html");
}

Ответ 5

В IIS существует параметр, называемый привязки, который позволяет вам выбрать, на какие имена хостов будет отвечать ваш веб-сайт. Эта функция позволяет экземпляру 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>

Ответ 6

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

Надеюсь, что это поможет как можно меньше:)

Fredrik wirth

Ответ 7

если вы хотите обработать код, сделайте это в 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 Примечание. Я пишу через свой мобильный телефон, поэтому рассмотрим орфографические ошибки.