我打算在共享主机帐户上发布一个 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 服务器变量?如果它不是您预先确定的域之一,则将该请求踢至错误页面。
这个link向您显示各种可用的服务器变量和一些示例输出。
Rick Strahl 也有一个非常好的 blog post关于解析变量以获取有关您的请求的各种信息。这是一个很好的引用。
希望这有帮助!
关于c# - 如何保护asp.net应用程序仅在指定域上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5253783/