摘要介绍了基于asp.net平台b/s架构的 应用 系统 网络 安全的设计, 分析 了b/s三层网络架构的安全机制,给出了通过身份验证、权限控制、数据加密、存储过程访问数据库等手段实现系统的安全性的技术要点。
关键词asp.net;b/s架构;身份验证;存储过程
1引言
随着internet技术的 发展 和基于web开发平台的推出,b/s结构逐渐取代了传统的c/s结构,成为了主流结构。b/s结构是一种以http为传输协议,客户端通过浏览器访问web服务器以及与之相连的后台数据库的体系结构。b/s构架具有良好的跨平台性、可扩展性和易更新升级等优点,正是b/s架构的这种开放性的特点,也对网络系统的安全体系的设计和实现提出了新的要求。本文以应用系统的开发为例,阐述了asp.net平台下开发b/s结构的应用系统的安全设计,从系统架构、角色及用户权限控制、数据库访问等方面分析了如何保障数据和系统的安全。
2基于asp.net的三层网络架构的安全性
系统基于windows2000server操作系统,采用asp.net实现web服务器与数据库的连接,后台数据库为sqlserver2000系统,以visualstudio.net为系统开发平台,采用b/s的三层架构。Www.133229.cOM三层是由显示层、中间层、数据层组成。显示层是利用浏览器为客户提供应用服务的图形界面,负责直接跟用户进行交互;中间层位于显示层和数据层之间,由应用服务器和web服务器实现系统的业务逻辑功能;数据层是三层中的最底层,负责数据的存储和访问。每层的功能非常清晰,层与层之间不能跨越,客户端不直接与数据库进行交互,而是通过com/dcom通讯与中间层建立连接,中间层经过ado.net实现对数据层的数据进行访问,实现了显示、数据、逻辑的分开,减少了耦合度。asp.net在网页中使用基于事件的处理,显示层的页面代码和后台的代码分离,系统采用c#作为后台代码的语言。.net中可以方便地实现组件的装配,后台代码通过命名控件可以方便地使用自己定义的组件。显示层放在asp页面中,数据库操作和业务逻辑用组件来实现,方便地实现了三层架构,减少入口点,防止客户端被破坏而给数据库带来损失的风险,保证系统的安全。
3asp.net应用的安全性
系统利用asp.net与microsoftinternet信息服务联合起来协同工作提供了优秀的安全控制,包括身份验证和权限控制两部分。身份验证是对发送请求信息的用户进行身份识别,一旦验证通过,权限控制程序就会决定用户是否有权限访问所调用的资源。
asp.net支持三种类型的身份验证,分别是windows身份验证、表单身份验证、passport身份验证。基于表单的验证,是三种验证方式中最灵活的一种。基于表单的验证服务使用cookies来验证用户,cookie是一小段文本信息,伴随着用户请求和页面在web服务器和浏览器之间传递,用户每次访问站点时,web应用程序都可以读取cookie包含的信息。在登录页面中,用户输入用户名和密码,提交该页面送回服务器,应用程序根据存储在数据库中的数据来验证请求,用户通过验证后,asp.net发出一个cookie,里面包括了为此用户产生的一个有效的身份票据,该身份票据是用户进行系统访问的“通行证”。在随后发出的请求页面的请求报头里包含此cookie,如果没有通过验证则用户被重新定位到登录页面。身份票据的确定可以根据应用需求而设计。一般系统中身份票据由用户名和用户标识号构成。
系统的权限控制采用基于角色的访问控制,权限赋予角色,角色分配给用户。一个用户可拥有多个角色,一个角色可授权给多个用户。用户不直接与权限相连,而是通过所属的角色享有权限,实现了用户与访问权限的逻辑分离,极大地方便了权限管理。一般来讲角色数要少于用户数,这样可以通过更改角色的权限实现对大批量用户权限的更新,不必一个一个地设定用户的权限,从而降低了管理的成本。系统有多个功能模块,可以根据需要设定多个角色,定制角色的权限就是设定每个角色针对不同功能的权限,对每个功能都包括五种权限:浏览权限、查询权限、添加权限、修改权限、删除权限。分别代表可以对此功能页面下的数据执行浏览、查询、添加、修改、删除操作。角色的权限设定后只需给用户分配角色即可,同一个用户可属于多种角色,不过他对某一功能的操作权限是取此用户所属几个角色中对此功能最高的权限。系统可以根据情况添加、删除、修改角色,定制角色的权限,通过这种角色的权限定义可以实现各种复杂的安全策略。
通过权限控制,保障了合法用户顺利实现系统功能,禁止了非授权用户对系统的入侵。在显示页面的时候,根据用户所属角色的不同,显示不同的页面。在登录页面中,用户输入凭证用户名和密码,系统验证通过后,根据输入的用户名得到所属的角色,根据角色和功能权限的对应关系进而得到此用户对所有功能模块的权限情况,系统据此加载功能链接区页面发送给浏览器,用户就看到了属于自己的主页面。在此页面上只显示出此用户有权限访问的链接,无权访问的链接不显示。
4数据库访问的安全性
在基于 网络 的系统中,用户的信息安全是非常重要的,一旦用户的密码被盗取后,系统的数据和整个数据库也就不安全了,通过对用户的口令加密可以解决这个 问题 ,用户密码不以明文的方式存储在数据库中,而是存储它们加密后的版本。当需要对用户进行验证时,只是对用户的口令再进行加密,然后把它与数据库中的加密口令进行比较即可。asp.net可以方便地实现对密码的加密,在命名空间system.web.security中包含了类formauthentication,其中有一个 方法 hashpasswordforstoringlnconfigfile可解决此问题,它支持用于加密字符串的“sha1”和“md5”散列算法,将用户提供的密码变更乱码,然后存储起来。这样在数据库中存储的就不是实际的密码而是加密后的密码,保证了用户、数据和数据库的安全。
系统采用的是三层架构体系,用户不直接访问数据库,而是通过中间层的ado.net在.net平台中提供对数据库的访问服务。ado.net是全新的数据访问接口,它把访问数据和操纵数据彻底隔离,可以在非联机状态下使用。ado.net用两个核心组件来访问和处理数据:.net数据提供程序和dataset。数据提供程序是一组包括connection、command、datareader和dataadapter对象在内的组件,是专门为数据处理以及快速地只进、只读访问数据而设计的组件。dataset就是数据集,是把数据库中的数据映射到内存缓存中的所构成的数据器。在我们的系统中数据库用的是sqlserver,数据提供程序就是sqlserver数据提供程序sqlserver.net。通过sqlserver数据提供程序完成和数据库的连接并将数据填充到dataset对象,然后客户端再通过读取dataset来获得需要的数据。
系统通过中间层的组件ado.net访问数据库,采用存储过程实现对数据的操作。通过存储过程可以实现用户和数据的隔离,通过执行存储过程实现对数据表的操作,避免了对数据表的直接访问。存储过程还可以避免一种叫做‘sql注射’的攻击,这种攻击主要会在合法输入参数中添加如and或者or的操作符。存储过程还有助于对用户屏蔽数据库的内部实现,以减少 应用 程序泄密的危险,保证了数据的安全。在应用程序中直接调用存储过程,相对于直接使用sql语句,有以下好处:存储过程可以将多个sql语句打包在一个存储过程中,以批处理的方式执行,而不是从客户端发送多个请求,这样就减少了网络通信量;执行的速度更快,存储过程在调用时只进行一次解析和优化,再次调用这个存储过程时就可以直接从内存中调用即可,而执行sql语句时每次都要进行解析和优化;存储过程还可以使页面完全独立于数据库中表的具体实现,只要在存储过程接口不变的情况下开发人员对数据库的任何改动都不需要对显示层和中间层的程序作改动,这样大大方便了系统的修改和维护。
5结束语
对采用基于asp.net构建的b/s结构的应用系统的安全设计进行了讨论,基于web的应用系统的安全体系设计相对于传统的c/s模式,既要考虑数据访问的安全,又要考虑网络的安全。web开发平台asp.net的安全访问机制使得web的安全性和可靠性得到了基本的保障,采用b/s的三层架构,将显示层、中间层、数据层在逻辑上相互独立,减少了耦合度,保证了系统的安全。
参考 文献
[1]李兰友,杨晓光编著.asp.net实用程序设计[m].清华大学出版社,2005
[2]邹显春,张为群.一种主动网络管理系统结构的 分析 与 研究 [j]. 计算 机 科学 ,2006(10):58-60
[3]费雅洁.通用型智能化管理信息系统的设计与实现[j].微计算机信息,2008(09):29-31