我玩弄MVC 4,第一次检查出什么改变/添加/等相比MVC 3。
要开始了,我创建了一个空白的MVC 4 Web应用程序,并开始从头开始构建。
其中之一,我注意到,在MVC 4个不同的第一件事情是,以下web.config设置都没有在网页上的可访问性的影响:
<configuration>
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
.....
</configuration>
早在MVC 3,上述授权设置将拒绝所有匿名用户访问该网站中的任何内容。 不过,如果我添加了相同的设置到一个MVC4 Web.config文件,匿名拥有自由支配在那秒的URL /他选择。
我需要什么,在MVC 4做锁定了所有的路径,像我在MVC 3那样?
看看保护您的ASP.NET MVC 4应用程序和新的使用AllowAnonymous属性 。
不能使用路由或web.config文件中,以确保你的MVC应用程序(所有版本)。 以确保您的MVC应用程序的唯一支持的方法是应用授权属性...
引用
MVC使用的路线,不URL映射到喜欢的WebForms,PHP和传统的Web服务器物理文件位置。 因此,使用的web.config一定会打开你的网站的一个安全漏洞。
该产品团队将有一个沟通,如果这个改变在未来,但现在它是不例外的规则。
例子:
先从默认的ASP.Net MVC项目(互联网/内联网)。
编辑Web.config中加入:
<location path="Home">
<system.web>
<authorization>
<deny users="*">
</authorization>
</system.web>
</location>
运行该项目,默认情况下将使用默认的路径/Home/Index
,你看到的内容,简单地绕过,没有更改默认模板web.config中。 为什么? 由于ASP.Net管道比较请求在web.config中指定的位置的URL。 然而, 经过授权的事件已经在管道被执行路由发生(默认路由或者自定义路由),并允许访问据称禁区。
此外,任何MVC Redirect()
也将作为再次通相同的安全措施授权管道事件后的路由发生。
我不认为任何人应该接受八九不离十工作的安全性。 难道它正确的第一次,不要偷懒和使用的东西,这不是设计来与特定的技术来使用。