2016-05-14 32 views
1

我已經構建了一個MVC 5應用程序。現在是時候將它發佈到生產中了。 基礎架構由兩臺服務器組成:一臺可以在互聯網上訪問,另一臺只能在內部網中訪問。 服務器是Windows Server 2012 R2,並使用IIS 8.5託管應用程序。阻止訪問ASP.NET MVC中的公共操作5

該應用程序由後端和前端組成。後端的功能只能通過登錄才能訪問。

我想解決的問題是:如何防止從Internet登錄到應用程序並僅允許在Intranet中使用它?

我認爲這可能是web.config上的一些配置,以防止打開登錄頁面。

我已經閱讀了很多文章,但所有的結果都是爲了防止未經授權的用戶頁面。在我的情況下,登錄控制器具有[AllowAnonymous]屬性,並且可以在未經授權的情況下訪問它。

如果它可以用在web.config中一個簡單的配置,我要在web.config中添加一鍵跟蹤它是互聯網上或服務器上的Intranet服務器等進行:

//for server accessible on intranet 
<add key="serverType" value="PUBLIC"/> 

// or 

//for server accessible on intranet 
<add key="serverType" value="Private"/> 

而在相應的登錄控制器中,我將檢查該值,如果它是ConfigurationManager.AppSettings["serverType"] == "PUBLIC",我會將其重定向到站點公共主頁。

此解決方案是否存在任何安全問題?

回答

0

在這種情況下,我會改變配置與轉換或參數化(我更喜歡這一個)使用適當的身份驗證類型。例如,匿名用於公共和Windows/Forms Auth用於私人。您可以爲每種服務器類型進行變換/參數化。

以下帖子提供了有關ASP.NET安全性的更多細節。

https://msdn.microsoft.com/en-us/library/3yfs7yc7.aspx

https://msdn.microsoft.com/en-us/library/7t6b43z4.aspx

http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx