Как запретить другим доменам указывать на мой домен?
Недавно я узнал, что есть другие имена доменов, указывающие на мой сайт (которые не принадлежат мне), и мне было интересно, как люди могут остановить/предотвратить это. Я размещаю это на 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
Примечание. Я пишу через свой мобильный телефон, поэтому рассмотрим орфографические ошибки.