Jed*_*Jed 14 asp.net-mvc forms-authentication web-config asp.net-authorization
我第一次玩MVC 4来查看与MVC 3相比已经更改/添加/等等的内容.
首先,我创建了一个空白的MVC 4 Web应用程序,并从头开始构建.
我注意到的第一件事与MVC 4不同的是,以下web.config设置对网页的可访问性没有影响:
<configuration>
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
.....
</configuration>
Run Code Online (Sandbox Code Playgroud)
回到MVC 3,上面的授权设置将拒绝所有匿名用户访问站点内的任何内容.但是,如果我将相同的设置添加到MVC4 Web.config文件中,则匿名者可以自由选择他/她选择的URL.
我在MVC 4中需要做什么来锁定所有路径,就像我在MVC 3中那样?
Eri*_*ips 23
看一下保护ASP.NET MVC 4应用程序和新的AllowAnonymous属性.
您不能使用路由或web.config文件来保护您的MVC应用程序(任何版本).保护MVC应用程序唯一受支持的方法是应用Authorize属性...
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>
Run Code Online (Sandbox Code Playgroud)
运行该项目,默认情况下,您将使用默认路由/Home/Index并看到内容,只需绕过web.config而不更改默认模板.为什么?因为ASP.Net管道正在将请求的URL与web.config中指定的位置进行比较.但是,在管道中执行授权事件后,路由发生(默认路由或自定义路由)并允许访问所谓的受限区域.
此外,任何MVC Redirect()也将绕过相同的安全措施,再次在授权管道事件之后进行路由.
我认为没有人应该接受安全工作.第一次正确地做,不要懒惰,并使用不是为特定技术设计的东西.
| 归档时间: |
|
| 查看次数: |
26138 次 |
| 最近记录: |