如何锁定在ASP.NET MVC的路径?(How to lock down paths in ASP

2019-06-17 14:49发布

我玩弄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那样?

Answer 1:

看看保护您的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()也将作为再次通相同的安全措施授权管道事件后的路由发生。

我不认为任何人应该接受八九不离十工作的安全性。 难道它正确的第一次,不要偷懒和使用的东西,这不是设计来与特定的技术来使用。



文章来源: How to lock down paths in ASP.NET MVC?