Web 安全对策研究
2016-03-04吴文种
吴文种
摘要:该文以网站系统的安全为研究对象,介绍和分析Web服务和应用存在的漏洞和所面临的威胁,探讨Web安全问题的对策,并将这些对策体现在通用的最佳实践原则应用于网络超市购物平台“校宿购”的设计中。
关键词:网站;Web应用;Web安全;程序安全
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)36-0024-02
1 概述
随着互联网的广泛普及和应用以及信息技术的发展,越来越多基于web应用的产品油然而生,各类网站数量呈井喷式疯狂增长。互联网的基础设施建设致使网民数量迅猛增加,随之而来的,是也在飞速增长的安全威胁。接连被发现的漏洞,恶意攻击的黑洞,在网络上肆意爬行的蠕虫,迅速传播的病毒,窃取他人虚拟财务木马,类似等等不可预料的安全问题使人惶惶不可终日。Web安全的对策研究必不可少,目前和相当的一段时间内,国内外从安全协议的制定、安全产品的研发、Web服务器的安全控制、系统平台的安全等方面着手。
2 Web安全概述
2.1 web安全的定义
Web是建立在Internet基础上的应用,Web安全的内涵和外延都可看作是网络安全和信息安全的一个子集。网络安全是指网络系统的硬件、软件
及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。[1] 国家信息安全重点实验室对信息安全的定义是:“信息安全涉及信息的机密性、完整性、可用性、可控性。综合起来说,就是要保障电子信息的有效性。”所以可以给Web安全下定义:Web安全指信息在网络传输的过程中不被篡改、不丢失和只被授权用户使用,包括系统安全、数据安全、程序安全和通信安全。
2.2 Web安全面临的问题
第一是Web服务器的安全,它是最基础也是最困难的,具体体现在:服务器程序编写不当,导致远程代码的执行;应用程序编写不当,过滤不严格,造成代码注入或者引起信息泄露、文件越权下载等等问题。
第二是Web客户端的安全,采用Java Applet、Cookie、ActiveX等应用程序在用户使用浏览器查看或者编辑内容时可以自动下载并且在客户端运行,假如这些程序被恶意使用,能窃取、修改和删除客户机上的信息。还有一种是跨站脚本被动式攻击,而且不好利用。
第三是Web通信的安全,Web信道面临的威胁是网络嗅探,以拥塞信道、耗费资源为目的的拒绝服务攻击。我们需要注意的是,很多Web应用的攻击并不是只针对一个方面,而是综合起来利用各方面的安全漏洞。
2.3 Web安全的对策
第一,物理安全策略。目的是为了保护硬件实体和通信链路免受破坏;验证用户身份和使用权限,避免用户越权操作等等。物理安全策略的一个主要问题是抑制和防止电磁泄漏。防护措施有两种,一是对传导发射的防护,二是对辐射的防护。
第二,访问控制策略。访问控制策略的主要任务是保证网络资源不被非法访问和使用,是保护网络资源、维护网络系统安全的重要手段。它包括入网访问控制、目录级安全控制、网络的权限控制、属性安全控制、网络监测和锁定控制、网络服务器安全控制、防火墙控制和网络端口节点的安全控制。
第三,信息加密策略。信息加密的目的是为了保护Web服务的数据、文件、控制信息和密码,保护网上传输的数据。网络加密的方法有三种,一是链路加密,二是端点加密,三是节点加密。
第四,安全管理策略。在网络安全中,采用上述技术措施,还要加强网络安全管理,制定相关制度。网络安全管理策略包括:安全管理等级和范围的确定;有关网络操作使用规程、人员出入机房管理制度的制定;网络系统的维护制度、应急措施的制定。
3 程序安全
3.1 ASP.NET程序
ASP.NET是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。[2]ASP.Net安全性与IIS安全性协同工作, 包括身份验证、授权服务得以来实现ASP.Net安全模型。
身份验证是一个标识应用程序客户端的过程,它依赖IIS对用户进行验证,并且创建一个Windows访问令牌用以表示已通过验证的标识。IIS提供几种身份验证机制,有基本身份验证、简要身份验证、集成Windows身份验证、证书身份验证和匿名身份验证。
授权服务是在给用户票据的时候假如了一个字符串的角色信息,比如“Administrator”,当一个请求过来的时候,能验证用户认证授权,ASP.NET中有一个专门的事件用来处理叫Application_AuthenticateRequest,在这个事件中只需将这个字符表达的角色重建给用户。
3.2 PHP程序
Hypertext Preprocessor,超文本预处理器,是一种开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。[3]
以PHP5.01为例,支持它的Web服务器有:Apache, Microsoft Personal web Server, Microsoft Interne tinformation Serve,
AOLserver,Netscape Enterprise 等等。PHP有很多设置选项来控制行为,其配置与php.int有关,需要注意的问题如下:
1) 关闭错误提示
把php.ini配置文件中的display_errors = On设置为off从而关闭错误显示。关闭之后,不会再显示php函数执行错误的信息,在一定程度上防止了攻击者通过错误信息得到脚本的物理位置和一些其它有用的信息,至少给攻击者的黑箱检测造成了一定的障碍。如果一些错误信息对自己有用,那么可以把它写到指定的文件中,修改log_errors = Off 为log_errors = On 以及指定文件,找到;error_log = filename这行, 去掉前面;注释,把filename改成指定文件, error_log = /usr/local/apache/logs/php_error.log,这样错误就会写到php_error.log文件里。
2) 开启安全模式
php的safe_mode功能限制或禁用了很多函数,在很大程度上解决了php的安全问题。在 Safe Mode部分中把safe_mode = Off 改为safe_mode = On ,就打开了safe_mode功能。一些执行系统命令的函数比如shell_exec()和``就被禁止了,其它的如exec()、system()、 passthru()和 popen()将被限制,只能执行 safe_mode_exec_dir指定目录下的程序。
3.3 SQL注入
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。[4]它利用现有的应用程序,将SQL命令注入到后台数据库引擎执行中。
SQL注入方法有两种,一是猜表名:And (Select count(*) from 表名)<>0或者猜列名:And (Select count(列名) from 表名)<>0,这个猜解速度慢但是效果最好,具有广泛性。二是后台身份验证绕过漏
洞,就是'or'='or'后台绕过漏洞,利用AND和OR的运算规则,造成后台脚本的逻辑错误。
怎么防范SQL注入呢?有如下几种方法:
1)输入验证。检查用户输入的合法性,确保输入的数据是合法的。数据检查应该在客户端和服务器端都执行。
2)错误消息处理。使用一种标准输入确认机制去验证输入数据的长度、语句和类型等。
3)加密处理。将用户的登录名和密码加密保存。
4)用存储过程来执行所有查询。使用参数传递方式防止被攻击,使得数据库权限只允许特定存储过程执行。
5)使用漏洞扫描工具。一个完善的漏洞扫描程序可以专门查找SQL注入式漏洞。
4 程序安全的应用
网络超市 “校宿购”,是针对高校建立的一个OTO电子商务网站,主要通过线下仓储式超市与线上电子商务平台,实现销售学生所需的生活物品。为学生提供网上订货,线下即时送货上门的便利服务。用户可以通过pc端或者移动端访问此网站,完成订货功能。系统分为两部分,即前台系统和后台系统,前台系统是用户的购买商品系统,后台是管理员系统保存用户所有的数据。
在“校宿购”的购物平台设计中,数据库设计是关键之一,我们不仅要确保数据库的安全也要进行安全评审。首先,不能太信任用户的输入,用正则表达式对用户的输入进行校验;其次不使用动态拼装SQL,尽量使用存储过程进行数据查询存取;其三,不使用管理员的权限进行数据库连接,让每个应用使用单独的权限去有限的数据库连接;其四,采用辅助软件和网站平台来检测SQL注入,确保数据库打了最新的补丁,在每个阶段都要坚持不断地评审,不能松懈。
以上的安全策略也要用于“校宿购”中,让用户能放心地在本平台购买自己所需的东西。为了保护用户的隐私,我们将不遗余力的改善该购物系统所存在的安全问题。
5 小结
互联网的不断发展,使得它越来越成为人们生活中不可分割的一部分,因此人们的观念也发生了变革,解决安全现状愈发急不可待,以上内容只是其中的一小部分研究,还有系统平台的安全、数据安全和网络安全等方面的威胁不在少数,需要我们花精力和时间去探讨和解决。Web服务是新一代应用程序集成,通向新的商业模式的大门,我们在享受它的同时也需要学会保护自己的利益免受不必要的损失。
参考文献:
[1] 闫大顺,石玉强.网络安全原理与应用[M].北京:中国电力出版社,2010:2-7.
[2] ASP.NET百度百科[EB/OL].http://baike.baidu.com/link?url=CPNPXQxpWlchY2T92gopxI3ZQ3EiEMfOvh4OAA1iL4sBYA t5KhrW8fpDAil6nzcafVWNbKZVu6NE576LtBOx6q.
[3] PHP百度百科[EB/OL].http://baike.baidu.com/link?url=irUz7etFUU-ozeKPQ_wF0vrhkCgoGY0lFfFObvrBQdP5IZzsVWo6shlhXg4PAa435flXnvlJR7cXed2EKVW8YVGHYeUhLl0g2o24qJ LJmNK.
[4] SQL注入 百度百科[EB/OL].http://baike.baidu.com/view/3896.htm.
[5] 齐特佳. 在WEB信息管理系统中AJAX技术的应用及安全分析实践[D]. 北京: 北京邮电大学,2008.
[6] 熊燕.浅析计算机网络安全隐患及防范策略[J].职业,2012(15).
[7] 修云峰.PTN网络规划和安全技术及其在南京移动网络中应用的研究[D]. 南京:南京邮电大学,2011.