繁体   English   中英

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

[英]How to protect asp.net application to run only on specified domain?

我将在共享主机帐户上发布一个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();
    }
}

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

链接显示了各种可用的服务器变量和一些示例输出。

Rick Strahl也有一篇非常不错的博客文章,内容涉及解析变量以获取有关您的请求的各种信息。 这是一个很好的参考。

希望这可以帮助!

检查传入请求的Request.Url.Host 匹配吗? 确定的人可以通过将服务器放置在专用网络上并代理对它的请求来解决此问题,但这可能是您可以管理的最好的方法。

这篇博客文章演示了如何使用专业许可系统来实现ASP.NET应用程序的域名保护。

并可能在您自己的服务器上检查数据库中的域,以通过Web服务验证域。 我的意思是,您可以在主网站上创建一个名为“网站”的表,在子网站中获取域名,然后使用网络服务检查您的主数据库是否存在该域

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM