如何保护asp.net应用程序只在指定的域上运行?

时间:2011-03-09 23:47:44

标签: c# asp.net web-applications

我将在共享主机帐户上发布一个asp.net预编译的网站,但我不希望我的代码被复制并能够在另一个域上运行。我需要检查域名,如果不是example.com或www.example.com重定向到错误页面或显示错误作为响应。

编辑:这是基于给定答案的解决方案

void Application_BeginRequest(object sender, EventArgs e)
{
    string[] safeDomains = new string[] { "localhost",
    "example.com", "www.example.com" };

    if (!((IList)safeDomains).Contains(Request.ServerVariables["SERVER_NAME"]))
    {
        Response.Write("Domain not allowed!");
        Response.End();
    }
}

4 个答案:

答案 0 :(得分:2)

如果提前知道域,为什么不检查global.asax的Application_BeginRequest处理程序中的SERVER_NAME服务器变量?如果它不是您预定的域之一,请将请求踢到错误页面。

link向您显示可用的各种服务器变量和一些示例输出。

Rick Strahl在解析变量方面也有很好的blog post来获取有关您的请求的各种信息。这是一个很好的参考。

希望这有帮助!

答案 1 :(得分:1)

检查传入请求的Request.Url.Host。它匹配吗?确定的可能是通过将服务器放置在专用网络上并代理对它的请求来规避这一点,但它可能是您可以管理的最佳服务。

答案 2 :(得分:1)

blog post演示了如何使用专业许可系统实现ASP.NET应用程序的域名保护。

答案 3 :(得分:0)

并且可能在您自己的服务器上使用您的数据库检查域以使用Web服务验证域。 我的意思是你可以在你的主网站上找到一个名为'网站'的表格 并在儿童网站获取域名 然后使用Web服务检查您的主数据库是否存在此域