基于ASP动态网站设计安全性的讨论
摘要:本文主要结合 ASP 动态网站开发经验,对ASP 程序设计存在的信息安全隐患进行分析,讨论了ASP 程序常见的安全漏洞,从程序设计角度对 WEB信息安全及防范做了技术分析和研究。
关键词:安全漏洞 黑客攻击 SQL注入 木马后门 系统分析 网站维护 网络安全
引言:网络上的动态网站以ASP为多数,本人曾经为公司制作的网站也是ASP的。本人作为电子商务网站的制作和维护人员,与ASP攻击的各种现象斗争了多次,也对网站进行了一次次的修补,根据工作经验,就ASP网站设计常见安全漏洞及其防范进行一些探讨。本文结合ASP动态网站开发经验,对ASP 程序设计存在的信息安全隐患进行分析,讨论了ASP 程序常见的安全漏洞,从程序设计角度对 WEB信息安全及防范做了技术分析和研究。
一. 网络安全总体状况分析
2008年上半年,只有半年时间,国家计算机网络应急技术处理协调中心接收的网络仿冒事件和网页恶意代码事件,已分别超出去年全年总数的14.6%和12.5%。
从国家计算机网络应急技术处理协调中心掌握的半年情况来看,攻击者的攻击目标明确,针对不同网站和用户采用不同的攻击手段,且攻击行为趋利化特点表现明显。对政府类和安全管理相关类网站主要采
用篡改网页的攻击形式,也不排除放置恶意代码的可能。对中小企业网站,尤其是以网络为核心业务的企业网站,采用有组织的分布式拒绝服务攻击(DDoS)等手段进行,影响企业正常业务的开展。对于个人用户,攻击者更多的是通过用户身份窃取等手段,偷取该用户游戏账号、银行账号、密码等,窃取用户的私有财产。
二.用IIS+ASP建网站的安全性分析
微软公司推出的IIS+ASP的解决方案作为一种典型的服务器端网页设计技术,被广泛应用在网上银行、电子商务、网上调查、网上查询、BBS、搜索引擎等各种互联网应用中。但是,该解决方案在为我们带来便捷的同时,也带来了严峻的安全问题。本文从 ASP 程序设计角度对 WEB 信息安全及防范进行分析讨论。
三.ASP安全漏洞和防范
3.1 程序设计与脚本信息泄漏隐患
bak 文件。攻击原理:在有些编辑ASP程序的工具中,当创建或者修改一个ASP文件时,编辑器自动创建一个备份文件,如果你没有删除这个bak文件,攻击者可以直接下载,这样源程序就会被下载。
防范技巧:上传程序之前要仔细检查,删除不必要的文档。对以bak为后缀的文件要特别小心。
inc文件泄露问题。攻击原理:当存在ASP的主页正在制作且没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用
搜索引擎对这些网页进行查,会得到有关文件的定位,并能在浏览器中查看到数据库地点和结构的细节,并以此揭示完整的源代码。
防范技巧:程序员应该在网页发布前对它进行彻底的调试。首先对.inc文件内容进行加密,其次也可以使用.asp文件代替.inc文件,使用户无法从浏览器直接观看文件的源代码。
3.2 对ASP页面进行加密。
为有效的防止ASP源代码泄露,可以对ASP页面进行加密。我们曾采用两种方法对ASP页面进行加密。一是使用组件技术将编程逻辑封装入DLL之中;二是使用微软的Script Encoder对ASP页面进行加密。     
3.3 程序设计与验证不全漏洞
验证码。普遍的客户端交互如留言本、会员注册等仅是按照要求输入内容,但网上有很多攻击软件,如注册机,可以通过浏览WEB,扫描表单,然后在系统上频繁注册,频繁发送不良信息,造成不良的影响,或者通过软件不断的尝试,盗取你的密码。而我们使用通过使用验证码技术,使客户端输入的
信息都必须经过验证,从而可以解决这个问题。
登陆验证。对于很多网页,特别是网站后台管理部分,是要求有相应权限的用户才能进入操作的。但是,如果这些页面没有对用户身份进行验证,黑客就可以直接在地址栏输入收集到的相应的 URL 路径,避开用户登录验证页面,从而获得合法用户的权限。所以,登陆验证是非常必要的。
SQL 注入。SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。
SQL 注入攻击是最为常见的程序漏洞攻击方式,引起攻击的根本原因就是盲目信任用户,将用户输入用来直接构造 SQL 语句或存储过程的参数。以下列出三种攻击的形式:
A.用户登录: 假设登录页面有两个文本框,分别用来供用户输入帐号和 密码,利用执行SQL 语句来判断用户是否为合法用户。试想,如果黑客在密码文本框中输入 'OR 0=0,即不管前面输入的用户帐号和密码是什么,OR后面的 0=0 总是成立的,最后结果就是该黑客成为了合法的用户。
B.用户输入:假设网页中有个搜索功能,只要用户输入搜索关键字,系统就列出符合条件的所有记录,可是,如果黑客在关键字文本框中输入' GO DROP TABLE 用户表,后果是用户表被彻底删除。
C.参数传递: 假设我们有个网页链接地址是 HTTP://……asp?id=13, 然后 ASP在页面中利用 Request.QueryString['id']取得该 id值,构成某 SQL 语句, 这种情况很常见。可是,如果黑客将地址变为HTTP://……asp?id=22 and user=0 ,结果会怎
样?如果程序员又没有对系统的出错提示进行屏蔽处理的话,黑客就获得了数据库的用户名,这为他们的进一步攻击提供了很好的条件。
解决方法:以上几个例子只是为了起到抛砖引玉的作用,其实,黑客利用“猜测+精通的sql 语言+反复尝试”的方式,可以构造出各种各样的sql入侵。作为程序员,如何来防御或者降低受攻击的几率呢?作者在实际中是按以下方法做的:
第一: 在用户输入页面加以友好备注,告知用户只能输入哪些字符,不能输入哪些字符;
第二: 在客户端利用 ASP 自带的校验控件和正则表达式对用户输入进行校验,发现非法字符,提示用户且终止程序进行;
第三: 为了防止黑客避开客户端校验直接进入后台,在后台程序中利用一个公用函数再次对用户输入进行检查,一旦发现可疑输入,立即终止程序,但不进行提示,同时,将黑客IP、动作、日期等信息保存到日志数据表中以备核查。
第四: 对于参数的情况,页面利用 QueryString 或者 Quest 取得参数后, 要对每个参数进行判断处理,发现异常字符, 要利用 replace 函数将异常字符过滤掉,然后再做下一步操作。
第五:只给出一种错误提示信息,服务器都只提示HTTP 500错误。
asp网页源码
第六:在IIS中为每个网站设置好执行权限。千万别给静态网站以“脚本和可执行”权限。一般情况下给个“纯脚本”权限就够了,对于那些通过网站后台管理中心上传的文件存放的目录,就更吝啬一点吧,执行权限设为“无”好了。
3.4 文件上传漏洞
诸如论坛,同学录等网站系统都提供了文件上传功能,但在网页设计时如果缺少对用户提交参数的过滤,将使得攻击者可以上传网页木马等恶意文件,导致攻击事件的发生。
防文件上传漏洞
 在文件上传之前,加入文件类型判断模块,进行过滤,防止ASP、ASA、CER等类型的文件上传。
 暴库。暴库,就是通过一些技术手段或者程序漏洞得到数据库的地址,并将数据非法下载到本地。
 数据库可能被下载。在IIS+ASP网站中,如果有人通过各种方法获得或者猜到数据库的存储路径和文件名,则该数据库就可以被下载到本地。
 数据库可能被解密
 由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。因此,只要数据库被下载,其信息就没有任何安全性可言了。
 防止数据库被下载 。由于Access数据库加密机制过于简单,有效地防止数据库被下载,就成了提高ASP+Access解决方案安全性的重中之重。以下两种方法简单、有效。
 非常规命名法。为Access数据库文件起一个复杂的非常规名字,并把它放在几层目录下。
 使用ODBC数据源。
在ASP程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密。
 使用密码加密。经过MD5加密,再结合生成图片验证码技术,暴力破解的难度会大大增强。
 使用数据备份。当网站被黑客攻击或者其它原因丢失了数据,可以将备份的数据恢复到原始的数据,保证了网站在一些人为的、自然的不可避免的条件下的相对安全性。
3.5 ASP木马
 由于ASP它本身是服务器提供的一项服务功能,所以这种ASP脚本的木马后门,不会被杀毒软件查杀。被黑客们称为“永远不会被查杀的后门”。我在这里讲讲如何有效的发现web空间中的asp木马并清除。
 技巧1:杀毒软件查杀
 一些非常有名的asp木马已经被杀毒软件列入了黑名单,所以利用杀毒软件对web空间中的文件进行扫描,可以有效的发现并清除这些有名的asp木马。
 技巧2:FTP客户端对比
 asp木马若进行伪装,加密,躲藏杀毒软件,怎么办?
 我们可以利用一些FTP客户端软件(例如cuteftp,FlashFXP)提供的文件对比功能,通过对比FTP中的web文件和本地的备份文件,发现是否多出可疑文件。
 技巧3:用Beyond Compare 2进行对比
 渗透性asp木马,可以将代码插入到指定web文件中,平常情况下不会显示,只有使用触发语句才能打开asp木马,其隐蔽性非常高。 Beyond Compare 2这时候就会作用比较明显了。
 技巧4:利用组件性能asp木马
 如:思易asp木马追捕。
 我们在查web空间的asp木马时,最好几种方法结合起来,这样就能有效的查杀被隐藏起来的asp木马。
四.总结
建议用户通过FTP来上传、维护网页,尽量不安装asp的上传程序。
对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。
asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。
到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定
复杂性。
要尽量保持程序是最新版本。
不要在网页上加注后台管理程序登陆页面的链接。
为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过上传即可。
要时常备份数据库等重要文件。
日常要多维护,并注意空间中是否有来历不明的asp文件。
一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。重新上传文件前,所有asp程序用户名和密码都要重置,并要重新修改程序数据库名称和存放路径以及后台管理程序的路径。
做好以上防范措施,您的网站只能说是相对安全了,决不
能因此疏忽大意,因为入侵与反入侵是一场永恒的战争!网站安全是一个较为复杂的问题,严格的说,没有绝对安全的网络系统,我们只有通过不断的改进程序,将各种可能出现的问题考虑周全,对潜在的异常情况进行处理,才能减少被黑客入侵的机会。
参考文献
[1] 袁志芳 田晓芳 李桂宝.ASP程序设计与 WEB信息安全.中国教育信息化.2007.
[2] 陈明奇.2007年上半年网络安全状况分析.信息网络安全.2007.
[3] 防范ASP木马的十大基本原则.计算机与网络.2006.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。