阻止访问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