如何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道事件之后的路由一样。

我认为任何人都不应该接受安全的工作 。 第一次正确的做,不要懒惰,不要使用那些不能用于特定技术的东西。