摘要:随着信息技术网络建设的不断发展, 网络办公系统以其方便、快捷、高效的特点极大推动了办公模式变革, 成为政府、企事业单位和电子商务的首选。笔者介绍了基于B/S架构和ASP.NET技术的网络办公系统硬件设计、软件设计、安全设计和一些关键技术, 希望能够为建设安全的网络办公系统提供一些参考。
关键词:B/S架构; ASP.NET技术; 硬件设计; 软件设计; 安全设计; 网络办公系统;
Abstract:With the continuous development of information technology and network construction, network office system with its convenient, fast and efficient features greatly promote the office model change, become the government, enterprises and e-commerce of choice. This paper introduces the hardware design, software design, security design and some key technologies of network office system based on B/S architecture and ASP.NET technology, which can provide some reference for building a secure network office system.
Keyword:B/S architecture; ASP.NET; hardware design; software design; security design; network office system;
1、引言
随着信息技术和网络建设的不断发展, 网络办公系统以其方便、快捷、高效的特点成为政府、企事业单位和电子商务的首选。网络办公系统不仅可以实现内部各级部门之间以及内外部之间办公信息的收集与处理、流动与共享和辅助决策, 还可以改变传统的集中办公模式, 实现随时随地办公, 节约办公成本, 提升管理效益。本文着重介绍基于B/S架构和ASP NET技术的网络办公系统的设计与实现和一些关键技术。
2、ASP.NET简介
ASP.NET是Microsoft公司推出的新一代建立动态WEB应用程序的开发平台, 它是.NET框架的一部分, 可以使用Visual Basic.NET、C#和Java Script.NET等任何.NET兼容的语言编写应用程序, 使得编程开发人员非常容易上手。ASP.NET具备验证、缓存、状态管理、调试和部署等功能, 为开发WEB应用程序提供了完备的解决方案。ASP.NET内置丰富的服务器端控件, 开发人员可以方便地对它们进行编程来实现一些功能, 很大程度上提高了工作效率、节约开发成本。在编程上, 使用ASP.NET可以实现页面逻辑和业务逻辑的分离, 将前台显示部分与后台代码分开, 使程序代码看起来更为简洁, 有利于程序的调试和修改。在安全性方面, 与ASP相比, 不但支持常规Windows身份验证, 还提供了Passport和Cookie两种不同类型的登录和身份验证方法。同时, ASP.NET还可以实现基于角色的安全设计, 为不同角色的用户指定不同的安全授权。ASP.NET可伸缩性好, 其允许使用跨服务器会话 (Cross-Server Sessions) , 其会话状态可以被另一台机器或另一个数据库上的其他进程所维护, 也更有利于WEB服务器的扩展。
3、系统架构与硬件设计
网络办公系统一般可采用B/S架构 (浏览器和服务器) 或C/S架构 (客户端和服务器) 实现。C/S架构一般部署于专用网络, 对终端硬件设备要求高, 适用于信息安全性较高的用户群体, 一般军队、银行等机构应用较多。目前, 应用比较广泛的是基于B/S架构的网络办公系统, 相对于C/S架构, 它的适应性更强, 对硬件和平台没有要求, Windows系统、Linux系统, 甚至是智能手机, 只要能联网、有网页浏览器均可作为用户终端;采用B/S架构的系统, 平时只需要对服务器进行维护和升级, 方便个别更换构件, 整体系统开销较小。
图1为基于B/S架构的网络办公系统硬件结构。WEB服务器主要用来存储WEB程序、运行IIS服务, 和终端组成用户逻辑, 和数据库服务器组成业务逻辑, 主要负责处理用户请求, 进行权限审查、条件判断、数据解析和组装回发, 是连接前端和后端的中间件。数据库服务器负责存储和管理数据。为提高系统安全性, 通常一般采用WEB服务器和数据库服务器分离的设计, 数据库服务器只为WEB服务器提供服务, 不至于暴露在互联网中, 将网络嗅探、暴力破解的可能性降到最低。此外, WEB服务器和数据库服务器分离, 数据库服务器可以只提供数据检索服务而不必提供其他服务, 处理效率更高。当然, 对于经济条件有限, 且对数据安全性和运行速度没有过高要求的用户也可将WEB服务器和数据库服务器部署在一起。
图1 基于B/S架构的网络办公系统硬件结构
4、系统软件设计
现在常用的网络办公系统一般包含用户身份验证、人员信息管理、物资信息管理、个人办公资料管理、短消息管理、通知公告管理、公文管理、权限管理和系统管理等功能模块, 并针对不同角色提供差异化网络服务。软件较多采用B/S架构的三层结构分层开发, 提高开发效率的同时增强系统安全性。
图2为三层结构的示意图。通常三层架构就是将整个WEB应用划分为表示层 (UI) 、逻辑层 (BLL) 和数据层 (DAL) , 充分体现“高内聚, 低耦合”的思想。通俗讲表示层就是程序展现给用户的人机交互界面, 用于接收用户输入的数据和显示数据。业务逻辑层也就是程序代码层, 主要用于制定业务规则、实现业务流程, 按照表示层指令处理数据, 是表示层和数据层沟通的桥梁。数据层直接对数据库进行操作, 实现数据的增添、删除、修改、更新、查找等功能。
图2 三层结构的示意图
ASP.NET编译环境通常使用微软提供的Visual Studio, 编程语言可采用VB.NET、C#、C++和Java Script.NET等。在这里推荐使用Microsoft推出的C#, 它兼具C++和JAVA的功能和特点, 是面向对象的编程语言, 具有良好的封装性、继承性和多态性。C#可采用编写类的方式对代码进行封装, 封装后代码逻辑清晰、易于管理, 其他程序可方便调用, 并不需要了解其内部的代码结构。特别是业务逻辑和页面分离后, 无论页面设计如何改变, 程序代码都不必做任何改动。继承性和多态性使得代码的可重用性大大提高, 最大程度减少开发工作量。另外, 在.NET平台无论使用哪种开发语言, 不同开发语言编写的程序可以无缝集成, 也就是说一种语言可以任意调用其他语言编写的程序模块, 能够有效解决开发团队成员使用不同编程语言时的协作问题。
5、安全性设计
图3为WEB应用程序的安全框架。任何客户Http请求都要经过三层验证, 首先是进行IIS验证, 通过后才能进行ASP.NET身份验证。通过了ASP.NET的身份验证后, 在对数据库进行存取、修改和删除等操作时也应获得数据库的身份验证, 每一步的身份认证是相互关联、缺一不可的。应用中最常用的加密形式是SSL (安全套接字层协议) , 在WEB服务器与浏览器间进行通信时使用SSL创建并交换密钥, 对客户端与服务器端的通信进行加密, 电子商务站点一般采用这种方式保护信用卡信息。关键技术如下。
图3 WEB应用程序的安全框架
(1) 防SQL代码注入式攻击。所谓SQL代码注入式攻击是指恶意用户在页面文本框输入查询数据时利用转义符将自己写的恶意SQL代码附加到正常SQL语句中, 用以破坏数据库。为防止注入式攻击, 一方面要在数据库设计时为用户赋予最小权限, 另一方面, 在编程时使用Parameters集合来构建安全的SQL语句, 将用户输入均当作文本来处理。同时, 建立长度和类型检查机制, 任何错误的输入都会引发异常处理。
(2) ASP.NET中表单验证安全控制。通过登录页面把用户名和密码发往服务器进行验证, 通过验证后, 根据不同的用户身份进行不同的授权, 执行不同的操作处理。授权是基于目录的, 可以针对某个目录来设置访问权限。此外, 为防止攻击者编写程序重复登录破解密码, 可以采用动态生成的图形码或附加码进行验证。
(3) 数据库安全设计。在设计数据库时, 应根据不同功能需要对需要访问的表赋予相应的插入、修改、删除、执行权限, 原则上, 给予用户最小的操作权限。数据库表之间的关系建立后, 应在数据库里创建事务来进行处理, 以确保数据的一致性, 避免错误删除数据。同时, 在关键数据的保护上采用加密算法, 增强数据安全性, 最常用的是MD5加密算法。为进一步增强安全性, 可给加密的字符串加上前缀和后缀, 然后进行MD5加密, 这样攻击者就无法判断加密字符串的加密规则了。
6、关键技术
(1) 数据验证技术。为了更好加强Web应用程序的安全性 (如防止脚本入侵等) , ASP.NET提供了服务器端的验证控件, 用于直接在网页的客户端对用户的输入数据进行验证。当用户输入错误, 验证控件便会显示错误信息, 并提示用户如何输入正确的信息。如用户名输入不为空、用户两次密码输入是否相同、邮箱输入是否正确等, 都是可以用验证控件来验证。
(2) ASP.NET缓存技术。缓存是系统或应用程序将频繁使用的数据保存到内存中, 在再次使用系统或应用程序时, 能够快速获取数据。在ASP.NET中, 有3种缓存技术, 即页面输出缓存、页面部分缓存和页面数据缓存。页面缓存是将整个页面内容临时保存在服务器内存中, 当用户请求该页面时, 从内存直接输出相关信息, 不需要经过服务器处理。页面部分缓存包括控件缓存和缓存后替换两种方式。控件缓存也被称为片段缓存, 这种方式允许将需要缓存的信息放在一个用户控件内, 并将该用户控件标记为可缓存的。缓存后替换与用户控件缓存正好相反。页面数据缓存, 可以通过键/值将数据存储在内存中, 并由ASP.NET执行, 数据过期或内存不足时自动清理内存。
(3) 水晶报表技术。水晶报表 (Crystal Reports) 是用于创建交互式报表的软件包, 为开发人员提供丰富的工具, 可以用来创建复杂的、专业的报表, 它可以直接从数据源生成所需的报表, 绘制不同行业的图形 (如工程图、流程图和业务逻辑图等) , 并可以采用Word、Excel、电子有机和WEB等发布。水晶报表智能化程度较高, 能够逐步引导用户完成操作。
(4) ASP.NET Ajax技术。Ajax是一种用于创建快速动态网页的技术。传统的网页如果需要更新内容, 必须重载整个网页面, 使用Ajax, 可以通过在后台与服务器进行少量数据交换, 在不重新加载整个网页的情况下, 刷新网页的局部。
7、结语
本文主要探讨了基于ASP.NET的B/S架构网络办公系统的总体解决方案和一些关键技术, 能够为从事此类工作的人员提供一定参考。开发网络办公系统是一项系统、复杂的工程, 无论是前期的需求分析、建设方案设计, 还是后期的服务器搭建、软件编程、总体测试涉及的工程量大、技术多, 各类开发人员需要查阅大量的相关资料, 脚踏实地边学习边实践, 不断提高。此外, 还需要注意的是, 建设网络办公系统一定要从用户的实际需求出发设计系统的功能, 要简约而不简单, 不能搞华而不实的东西, 能够提高工作效率、用户喜欢用的系统才有生命力。
参考文献
[1]胡恬, 谢逸, 王斯梁.基于ASP.NET平台的网上办公系统的安全技术研究[J].福建电脑, 2005 (5) .
[2]明日科技.ASP.NET从入门到精通 (第三版) [M].北京:清华大学出版社, 2012.