[英]Chrome bypass Windows Authentication for MVC 4 web application
我有一个使用Windows身份验证的MVC 4 Web应用程序。 我将该应用程序部署到带有IIS 7的真实Web服务器上。Windows身份验证功能可以很好地与Internet Explorer(IE),FireFox(FF)和Safari一起使用,但不适用于Chrome; 我正在使用Chrome版本27。
在这里,“ Works ”表示当用户打开浏览器(IE,FF或Safari)并浏览到Web应用程序站点时,首先会提示他/她在对话框中提供有效的凭据。 然后,如果他/她的凭据有效,则允许用户查看网站页面。 “ 不适用于Chrome ”表示Chrome始终允许用户立即浏览网页,而不会看到凭据对话框,也不会像IE,FF或Safari一样提示用户在对话框中输入凭据! 尽管我尝试清除Cookie,Chrome浏览器的缓存,然后关闭并再次打开Chrome,但我不知道该如何解决。 我知道不应执行Chrome的“清除Cookie”操作,因为IIS中的Windows身份验证模式与“表单身份验证”模式无关,与Cookie无关。
第一次将Web应用程序部署到服务器后,当我使用Chrome测试我的Web应用程序时,Chrome浏览器确实提示我在对话框中输入凭据,但是从第二次开始,Chrome浏览器不再提示我。
请让我知道我应该怎么做才能阻止Chrome浏览器让用户绕过凭据提示对话框。 先感谢您。
我按照以下两个步骤使MVC Web应用程序可与IE,FF和Safari一起使用:
在我的MVC 4 Web应用程序(Intranet模板)的Web配置(web.config)文件中,我将Windows身份验证功能指定为:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
在真实的Web服务器上,在IIS版本7中,我打开MVC网站应用程序节点并转到其“身份验证”节点以启用Windows身份验证,并禁用“匿名身份验证”。
看一下保护ASP.NET MVC 4 App和新的AllowAnonymous Attribute的安全 。
您不能使用路由或web.config文件保护MVC应用程序(任何版本)的安全。 保护MVC应用程序安全的唯一受支持方法是应用Authorize属性 。
MVC使用路由,并且不会将URL映射到物理文件位置,例如WebForms,PHP和传统的Web服务器。 因此,使用web.config肯定会在您的站点中打开一个安全漏洞。
如果将来这种情况发生变化,产品团队将与您进行沟通,但现在毫无例外,这是规则。
例子:
从默认的ASP.Net MVC项目(互联网/内联网)开始。
编辑web.config并添加:
<location path="Home">
<system.web>
<authoirzation>
<deny users="*">
</authoirzation>
</system.web>
</location>
运行项目,默认情况下,您将使用默认路由/Home/Index
并看到内容,只需绕过web.config而不更改默认模板即可。 为什么? 因为ASP.Net管道正在将请求的URL与web.config中指定的位置进行比较。 但是, 在管道中执行了“授权事件” 后 ,将进行路由(默认路由或自定义路由),并允许访问所谓的受限区域。
此外,任何MVC Redirect()
也将绕过相同的安全措施,就像在授权管道事件之后再次进行路由一样。
您需要将站点添加到本地Intranet区域。 我们通过组策略来做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.