构建安全的企业内部WEB程序

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

构建安全的企业内部WEB程序

为了保护企业内部的敏感信息、方便用户管理、确保用户只访问他们应该访问的地方。我一直在寻找最便捷的方法……

查询了一些资料,下述是我个人的一些理解。我们集合IIS和ASP.NET,通过验证(authentication)和授权(authorization)来实现企业WEB程序的安全。客户端对page.aspx的请求是这样发出的:

这里涉及到两个重要的概念,它们定义如下:

验证(Authentication):标识请求页面的用户。( The process of identifying the user who is requesting the page).

授权(Authorization):系统判定用户访问资源的权限。(System determines which resources he or she has access to.)

第一步,我们需要确定身份验证的类型。(条件1)在企业内部网中,我们已经有了包含所有用户帐号的数据库-活动目录,同时每一个登陆内部网的客户端都使用不同的用户帐号。现存的身份验证有:Windows身份验证、Forms身份验证、Microsoft Passport 身份验证。(条件2)其中Windows身份验证是基于现存的Windows 安全架构,它通过角色(Roles)控制来实现web程序的安全性。(结论)根据上述条件,我们采用基于Windows(Windows-based)的身份验证,我们需在Web.config文件中这样描述:

<configuration>

<system.web>

<authentication mode=”Windows” />

</system.web>

</configuration>

(注意:XML文件是区分大小写的)

为了实现Windows身份验证,IIS提供了三种类型:基本验证(Basic)、域服务器简要验证(Digest)、集成Windows验证(Integrated Windows Security)。

(条件1)用户能够登陆到内部网,他就通过了活动目录对他的验证,并拥有一张证书(credential)。当用户请求安全页面时,浏览器就会把证书传送给IIS。(条件2)集成Windows验证就是把IIS要求的身份验证预先交由活动目录来完成。(结论)这就是说:采用集成Windows验证方式,用户一登陆内部网就预先通过了IIS对他的验证。所以,我们采用集成Windows验证。

第二步,对要访问的资源授权。对资源进行授权的方式有两种:文件授权(file authorization)和URL授权(URL authorization)。

文件授权基于Windows 2000的ACL(Access Control List),它的优点在于通过ACL控制文件和文件夹是非常容易的;它的缺点在于,需要花费时间来管理不同文件/文件夹的ACLs,而且程序迁移时,ACL并不随着文件夹copy and past而迁移。

URL授权是在web.config中对不同的URL或文件夹进行授权。它的优点在于程序迁移方便;缺点是需要在web.config中书写代码。

微软推荐我们采用文件授权的方式,但基于可迁移性考虑,我还是采用了URL授权方式。假设marketing.aspx是只有管理员和营销部(成员都属于marketing用户组)才能访问的页面,fold文件夹下面包含了只有管理员和人事部(假设成员都属于human用户组)才能访问的页面。我们在web.config中这样设置:

<configuration>

<system.web>

<authorization>

<deny users=”?” /> <!--“?”表示匿名用户à

</authorization>

</system.web>

</configuration>

首先,我们拒绝了匿名用户访问我们的web应用程序。接着我们在<configuration>下加入:

<location path=”marketing.aspx”>

<system.web>

<authorization>

<allow roles=”lxm_nt\Domain Admins,lxm_nt\Marketing” />

<!-允许管理员和营销用户组成员访问à

<deny users=”*” /> <!—拒绝其他所有用户à

</authorization>

</system.web>

</location>

为了实现fold文件夹中的页面仅对管理员和人事部成员可见,我们在fold文件夹中添加上一个web.config文件。内容如下:

<configuration>

<system.web>

<authorization>

<allow roles=”lxm_nt\Domain Admins,lxm_nt\human” />

<deny users=”*” />

</authorization>

</system.web>

</configuration>

这里的web.config文件继承了父目录下的web.config文件的设置,并按自己的要求改写了设置。

通过验证和授权这些简单的设置,我们在企业内部网中实现了初步的安全。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有