如何lockingASP.NET MVC中的path?
与MVC 3相比,我第一次使用MVC 4来查看已经更改/添加/等等。
首先,我创build了一个空白的MVC 4 Web应用程序,并开始从头开始构build。
我注意到的MVC 4中的第一件事情是不同的是,以下web.config设置对网页的可访问性没有影响:
<configuration> <location path=""> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </location> ..... </configuration>
回到MVC 3,上面的授权设置将拒绝所有的匿名用户访问站点内的任何内容。 但是,如果我将相同的设置添加到MVC4 Web.config文件中,匿名可以自由select他/她所select的URL。
在MVC 4中,我需要做什么来locking所有path,就像我在MVC 3中所做的那样?
看看保护你的ASP.NET MVC 4应用程序和新的AllowAnonymous属性 。
您不能使用路由或web.config文件来保护您的MVC应用程序(任何版本)。 唯一支持的方式来保护您的MVC应用程序是应用授权属性…
引用
MVC使用路由,并不将URL映射到WebForms,PHP和传统Web服务器等物理文件位置。 因此使用web.config肯定会在您的网站上打开一个安全漏洞。
如果将来发生变化,产品团队将进行沟通,但目前这一规则无一例外。
例子:
从默认的ASP.Net MVC项目(Internet / Intranet)开始。
编辑web.config添加:
<location path="Home"> <system.web> <authorization> <deny users="*"> </authorization> </system.web> </location>
运行该项目,默认情况下,您将使用默认路由/Home/Index
,您将看到内容,只需绕过web.config而不更改默认模板。 为什么? 因为ASP.Netpipe道将请求的URL与web.config中指定的位置进行比较。 但是, 在pipe道中执行授权事件之后,将执行路由(默认路由或自定义路由),并允许访问所谓的受限区域。
另外,任何MVC Redirect()
都会绕过相同的安全措施,就像授权pipe道事件之后的路由一样。
我认为任何人都不应该接受安全的工作 。 第一次正确的做,不要懒惰,不要使用那些不能用于特定技术的东西。