Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何阻止其他域指向我的域?_C#_Asp.net_Iis_Dns - Fatal编程技术网

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

C# 如何阻止其他域指向我的域?,c#,asp.net,iis,dns,C#,Asp.net,Iis,Dns,我最近发现有其他域名指向我的网站(不属于我),我想知道人们如何阻止这种情况发生。我使用IIS在peer1上托管这个,我使用ASP.NET C# 我可以使用HttpModule或其他代码来拒绝非我的域名吗 有更好的方法吗?你应该激活基于名称的虚拟主机,并且只显示你真正的网站以获得所需的域名。对于所有其他名称,可以显示适当的错误消息 详细信息:通过其IP地址联系您的Web服务器。你无法阻止这一切。任何人都可以说,“连接到该IP地址”。例如,任何人都可以注册新域名以指向服务器的IP地址。但是,在请求内

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

我可以使用HttpModule或其他代码来拒绝非我的域名吗


有更好的方法吗?

你应该激活基于名称的虚拟主机,并且只显示你真正的网站以获得所需的域名。对于所有其他名称,可以显示适当的错误消息

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

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

共享webhosts就是这样工作的:只有一台服务器,但根据请求的主机名,它会为每个名称显示不同的网站

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


在Apache中,这是很容易配置的,只需查看他们的文档即可;对于IIS,我不知道,但我认为它同样简单。

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

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

希望它至少有点帮助:)


弗雷德里克·沃思(Fredrik wirth)

作为临时解决方案,您可以这样做。可能在主页加载或BeginRequest上

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

如果要在代码中处理,请在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中为您的网站指定主机头


注意:我通过我的手机写文章,在IIS中考虑拼写错误

,有一个设置允许你选择你的网站将响应的主机名。此功能允许IIS实例在单个IP地址上承载多个网站

如果您希望站点仅适用于和,则应将绑定设置为仅适用于“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>

无效应用程序\u BeginRequest(对象发送方、事件args args)
{
HttpRequest请求=HttpContext.Current.request;
HttpResponse response=HttpContext.Current.response;
如果((request.Url.Host!=“example.com”)&&(request.Url.Host!=“www.example.com”))
{
response.Clear();
响应.写入(“未授权域名:+request.Url.Host”);
response.End();
}
}

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

在.htacces中插入此代码

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

只需放入您的域。

您的站点无法控制哪些DNS记录指向您服务器的IP地址。但您无法找到请求来自的域名吗?如果你能找到,你可以重定向到另一个页面。有些网站这样做不是为了防止热链接吗?你能用你的托管环境的细节来更新这个问题吗。你是自己托管这个网站还是与托管公司托管。什么是web服务器(猜测IIS)以及您是否具有对它的管理访问权限。他们是否将您的站点包含在框架中是您的问题?您能否回答Bob的问题-他们是否将站点包含在框架中,或者您是否有问题,如困惑所建议的那样,您是否可以对其进行热链接内容。您是否可以进一步解释一下?我对如何执行您在iis中提出的要求有点迷茫。@Kerrek,在iis中指定主机头怎么样?(保持简单)@Waqas:我不认识IIS。查看文档中的“基于名称的托管”或“基于名称的虚拟托管”,诸如此类。也许这里的其他人可以告诉你怎么做,比如查看@Bob Vale的答案。在Windows 2008上的IIS 7中,这是相当简单的,使用主机头可能主机名不包含“www”是的,你是对的,我只是建议我的代码可能没有完全实现。