我最近发现有其他域名指向我的网站(不属于我),我想知道人们如何阻止/阻止这种情况发生。我使用IIS在peer1上托管这个,我正在使用ASP.NET C#。
我可以使用HttpModule或其他代码来拒绝不属于我的域名吗?
有更好的方法吗?
答案 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 注意:我正在通过手机写作,所以考虑拼写错误