2011-03-09 62 views
2

我打算在共享主機帳戶上發佈一個asp.net預編譯的網站,但我不希望我的代碼被複制並能夠在另一個域上運行。我需要檢查域名,如果不是example.com或www.example.com重定向到錯誤頁面或顯示錯誤作爲響應。如何保護asp.net應用程序只在指定的域上運行?

編輯:這是基於給定答案

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(); 
    } 
} 
+1

,您是否擔心有人把你的源/裝配並運行它在自己的網站或其他東西?如果您無法保護代碼/程序集免受某些其他服務器上的攻擊和使用,那麼您就無能爲力了。 – 2011-03-10 00:51:27

+0

@Alexei Levenkov我只是擔心容易複製和使用我的大會其他人可以訪問服務的文件。 – 2011-03-10 00:57:02

回答

2

如果域提前知道,爲什麼不檢查global.asax的Application_BeginRequest處理程序中的SERVER_NAME服務器變量?如果它不是您預先設定的域名之一,請將該請求踢到錯誤頁面。

這個link顯示你可用的各種服務器變量和一些示例輸出。

裏克斯特拉爾也有一個非常好的blog post關於解析變量來獲取有關您的請求的各種信息。這是一個很好的參考。

希望這會有所幫助!

1

檢查傳入請求的Request.Url.Host我的解決方案。它匹配嗎?通過將服務器放置在專用網絡上並代理請求,服務器可能會規避這種情況,但這可能是您可以管理的最佳選擇。

1

blog post演示瞭如何使用專業許可系統實現ASP.NET應用程序的域名保護。

0

並且可能在您自己的服務器上檢查數據庫域,以使用Web服務驗證域。 我的意思是,你可以對你的主網站上的表稱爲「網站」 和子網站獲得域名 然後用Web服務檢查你的主數據庫,如果這個域名存在

相關問題