如何阻止其他域指向我的域?

时间:2011-07-12 15:24:57

标签: c# asp.net iis dns

我最近发现有其他域名指向我的网站(不属于我),我想知道人们如何阻止/阻止这种情况发生。我使用IIS在peer1上托管这个,我正在使用ASP.NET C#。

我可以使用HttpModule或其他代码来拒绝不属于我的域名吗?

有更好的方法吗?

7 个答案:

答案 0 :(得分:5)

您应激活基于名称的虚拟主机,并仅显示您所需域名的真实网站。对于所有其他名称,您可以显示合适的错误消息。

详细信息:您的网络服务器通过其IP地址联系。你无能为力阻止这一切。任何人都可以说,“连接到该IP地址”。例如,任何人都可以注册新域名以指向您服务器的IP地址。但是,在请求中,有一个字段Host,其名称为www.example.com

收到请求后,您的服务器可能会选择检查Host字段,并根据该值提供不同的内容。在最简单的情况下,服务器完全忽略该字段并始终打印出相同的内容。但是在更复杂的设置中,所谓的“基于名称(虚拟)托管”,服务器根据主机名选择内容。

这是共享webhosts的工作方式:有一个服务器,但根据请求的主机名,它会为每个名称分配一个不同的网站。

因此,如果您想将服务器内容与主机名绑定,则必须告诉您的服务器仅为您想要的名称生成您的网站,并为所有其他情况生成不同的(错误)网站。

在Apache中,配置起来很简单,只需查看他们的文档;对于IIS,我不知道,但我想它也同样简单。

答案 1 :(得分:3)

如果您的托管环境是IIS,并且您拥有管理员权限。将您的默认网站设置为显示错误页面,然后使用与您的域匹配的主机标题创建一个新网站,以指向您的网站。

答案 2 :(得分:2)

这是我的解决方案。它真的很快,解决了我的问题。

将此代码插入.htacces

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

只需填写您的域名。

答案 3 :(得分:1)

作为临时修复,您可以执行此操作。可能在主页加载或BeginRequest上。

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

答案 4 :(得分:1)

在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>

答案 5 :(得分:0)

如果我记得我上次检查我的网站cpanel时,我看到了一项功能,如果选中该功能会停止重定向到我的域名。我使用Hostso作为我的主机,所以检查他们的测试cpanel。

希望它有助于至少:)

Fredrik wirth

答案 6 :(得分:0)

如果你想在代码中处理,那么在BeginRequest中的Global.asax中执行它,如下所示

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 注意:我正在通过手机写作,所以考虑拼写错误