快捷搜索:   nginx

ASP.NET 安全策略

首先肯定的是ms有一套完整的“Code Access Security”如下。



默认情况下,.net的web application都继承“C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config” 配置文件,其中安全相关的有

<location allowOverride="true">
<system.web>
<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
<trustLevel name="High" policyFile="web_hightrust.config"/>
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
<trustLevel name="Low" policyFile="web_lowtrust.config"/>
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>
<trust level="Full" originUrl=""/>
</system.web>
</location>

这里配置了策略可以被重写 allowOverride=true;
自带的几个策略级别及文件,
默认为FullTrust,而MS对fulltrust的说明是:“Therefore, the Full trust level is mapped to an internal handler and ASP.NET does not add additional policy to the application domain for full-trust applications.
也就是说在full模式下将不会使用任何额外的安全策略。附一张默认的权限列表,当然被重写后就另当别论。

到这里已经了解asp.net的shell危险性,防护工作也就简单了。在不伤害业务的情况下应当禁止重写安全策略,或者在适当的节点禁止下级重写安全策略。最终的工作是要配置安全策略,MS有详细的配置方法和文档在这里http://technet.microsoft.com/zh-cn/library/aa302424.aspx,如果你是个懒人可以直接设置为“<trust level="High" originUrl=""/>”或者更低,同时可以配合NT系统本身的FSO权限设置站点根目录的web.config为只读。

有几点要记住
0.FullTrust 是绝对危险的
1.切记要设置逻辑正确的策略,不要被攻击者用shell来重写策略文件。
2.从webshell里执行起来的exe不受asp.net的策略限制。
3.反射是个危险的方法
4.花点时间配置安全策略是一劳永逸的事情
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论