阻止访问ASP.NET MVC中的公共操作5

问题描述:

我已经构建了一个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",我会将其重定向到站点公共主页。

此解决方案是否存在任何安全问题?

在这种情况下,我会改变配置与转换或参数化(我更喜欢这一个)使用适当的身份验证类型。例如,匿名用于公共和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