论文部分内容阅读
摘要: ASP是开发网站应用的快速工具,但是有些网站开发人员只看到ASP的快速开发能力,却忽视ASP的安全问题。从分析ASP网站数据库信息的安全性出发,阐述ASP的安全问题,并给出解决方法或者建议。
关键词: ASP;安全
中图分类号:TP3文献标识码:A文章编号:1671-7597(2011)0110183-01
ASP是一种服务器端脚本编写环境是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。它可以与数据库和其他程序进行交互,是一种简单方便的编程工具ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。
1 ASP工作机理
ASP脚本是一系列按特定语法编写的,与标准HTML页面混合在一起的脚本所构成的文本格式的文件。当客户端的最终用户用Web浏览器通过INTERNET来访问基于ASP脚本的应用时,Web浏览器将向Web服务器发出HTTP请求。Web服务器分析、判断出该请求是ASP脚本的应用后,自动通过ISAPI接口调用ASP脚本的解释运行引擎(ASP.DLL)。ASP.DLL将从文件系统或内部缓冲区获取指定的ASP脚本文件,接着就进行语法分析并解释执行。最终的处理结果将形成HTML格式的内容,通过Web服务器“原路”返回给Web浏览器,由Web浏览器在客户端形成最终的结果呈现。这样就完成了一次完整的ASP脚本调用。若干个有机的ASP脚本调用就组成了一个完整的ASP脚本应用。
2 数据库的安全
ASP+ACCESS是多数网站选择的组合,这是因为ACCESS简单易用,但其安全性相对较差,存在ACCESS数据库被下载或打开Access数据库的密码被破解等安全隐患。
2.1 ACCESS数据库被下载
如果用户洞察到ASP源码,在ADO访问数据库的方式下,数据库存放的路径和文件名也就失密。用户可以轻而易举地在浏览器中打入地址及文件名,这样就可以下载到数据库文件。则该数据库就可以被下载到本地。
相应对策:
1)非常规命名法:为Access数据库文件起一个复杂的“非常规”名字,并把它存放在几层目录下。例如,对于网上新闻的数据库,我们不把它命名为“news.mdb”,而是起一个非常规的名字,如fy3c8fx.mdb,再把它放在如abc/123/j3c/vcx的几层目录下,这样想通过猜的方式得到Access数据库文件名就很难了。
2)使用ODBC数据源:ODBC即目标数据库连接器,它是Windows等系统自带的一个用于建立用户请求与数据库之间链接关系的应用程序。在ASP程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP程序源代码的失密而一同失密。
3)把数据库的扩展名强行改为*.asp格式,用户即使知道数据库路径名称,因为ASP文件是在服务器端解释后返给客户端的,Access数据库强行以ASP文件方式读取就会出错而防止了下载。
2.2 Access数据库的密码被破解
设置数据库密码机制,是Access安全的初级防范措施,因为Access数据库的加密机制是通过用户输入密码与某一固定的密钥进行异或形成一个加密串,针对这种特性现有很多专门破解Access数据库的加密密码的软件,因此用户即使对数据库设置了密码,如果数据库被下载,解密是非常容易的。
相应对策:加密口令:口令是系统中最敏感、最关键的信息,要实现口令的安全管理和动态更新,口令信息应保存在数据库中,且不要以明文存在,防止被截取。比较简单的做法就是利用脚本语言在管理的客户端用户提交时加密后再传送,服务器中数据库直接以加密后的编码存储,即使用户得到并打开了数据库也不会轻易了解加密后的编码含义。
目前,也有不少中小型企业采用微软提供的另一个数据库SQLServer
作为后台数据库,它的优点是查询简单,有充分的internet技术支持。但SQL和ACCESS一样,也存在许多安全隐患。
2.3 SA账户权限高
SQL提供了一个默认口令空白的SA账户,该账户具有超级用户的权限,它可以操作任何数据库,还可以操作注册表,甚至可以执行外部程序,一旦被入侵,后果不堪设想。
相应对策:设置一个强壮的SA账户口令,并且限制这个账户的使用,还要定期修改口令以防止口令扩散或者被太多的管理员所使用。另外最好使用Windows身份识别或者仅使用Windows模式,采用这种方式,则攻击者必须首先向这个域验证身份,而不是仅向SQL服务器验证身份。
2.4 用SQL语句作密码验证容易被绕过
绝大部分网站采取验证用户名和密码的办法进行用户身份识别,一般是通过下列select语句查找:Select*from用户表whereusername=”&user
name&”and pwd=”&pass&”,此时只要构造一个特殊的用户名和密码,如:abc”or”1”=”1,由于有or运算符和“1=1”恒成立条件,数据库的所有记录都满足此条件,因而可绕过密码验证,实现登录。
相应对策:1)过滤变量输入中的非法字符,如使用replace函数屏蔽单引号。2)把验证分成两步:先验证用户名,用户名合法后,再验证密码。
3 ASP代码的安全
由于ASP是非编译性语言,其源代码很容易被下载,也可以在浏览器的地址栏中输入地址而不用经过密码验证就直接进入某一页面,而这一页面可能是必须具备系统管理员的权限才能看到的页面。
相应对策:
1)对ASP页面进行加密:一般有两种方法,一种是使用组件技术将编程逻辑封装入DLL之中;另一种是使用微软的Script Encoder对ASP页面进行加密。2)在需要验证的ASP页面开头处进行相应的处理,比如:可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。3)不要把密码、物理路径直接写在程序中。4)要在应用程序的Globa.asa文件上为适当的用户或用户组设置NTFS文件权限。
4 总结
目前Web数据库访问的多种技术中,比如CGI(通用网关接口)、JDBC、PHP、ASP,ASP以其开发周期短,存取方式数据库简单,运行速度快而成为众多网站程序员的首选开发技术。但是其网络安全性也是不容忽视的。做为一个ASP开发者,你必须关注NT和IIS的安全漏洞,从上面的讨论我们可以看到ASP的很多漏洞都是由IIS所引起的。同时ASP程序员在开发自己的网站时,要注意来自ASP程序设计不当所引发的安全问题。本文的研究还是非常初步的,还有许多问题值得进一步的深入研究。
参考文献:
[1]毕克,基于ASP的网络开发技术分析[J].电脑知识与技术,2006(20).
[2]王忠贤,基于asp.net在线测试系统的设计与实现[J].计算机工程与设计,2007.
[3]宋红,计算机安全技术[M].北京:中国铁道出版社,2005.
关键词: ASP;安全
中图分类号:TP3文献标识码:A文章编号:1671-7597(2011)0110183-01
ASP是一种服务器端脚本编写环境是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。它可以与数据库和其他程序进行交互,是一种简单方便的编程工具ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。
1 ASP工作机理
ASP脚本是一系列按特定语法编写的,与标准HTML页面混合在一起的脚本所构成的文本格式的文件。当客户端的最终用户用Web浏览器通过INTERNET来访问基于ASP脚本的应用时,Web浏览器将向Web服务器发出HTTP请求。Web服务器分析、判断出该请求是ASP脚本的应用后,自动通过ISAPI接口调用ASP脚本的解释运行引擎(ASP.DLL)。ASP.DLL将从文件系统或内部缓冲区获取指定的ASP脚本文件,接着就进行语法分析并解释执行。最终的处理结果将形成HTML格式的内容,通过Web服务器“原路”返回给Web浏览器,由Web浏览器在客户端形成最终的结果呈现。这样就完成了一次完整的ASP脚本调用。若干个有机的ASP脚本调用就组成了一个完整的ASP脚本应用。
2 数据库的安全
ASP+ACCESS是多数网站选择的组合,这是因为ACCESS简单易用,但其安全性相对较差,存在ACCESS数据库被下载或打开Access数据库的密码被破解等安全隐患。
2.1 ACCESS数据库被下载
如果用户洞察到ASP源码,在ADO访问数据库的方式下,数据库存放的路径和文件名也就失密。用户可以轻而易举地在浏览器中打入地址及文件名,这样就可以下载到数据库文件。则该数据库就可以被下载到本地。
相应对策:
1)非常规命名法:为Access数据库文件起一个复杂的“非常规”名字,并把它存放在几层目录下。例如,对于网上新闻的数据库,我们不把它命名为“news.mdb”,而是起一个非常规的名字,如fy3c8fx.mdb,再把它放在如abc/123/j3c/vcx的几层目录下,这样想通过猜的方式得到Access数据库文件名就很难了。
2)使用ODBC数据源:ODBC即目标数据库连接器,它是Windows等系统自带的一个用于建立用户请求与数据库之间链接关系的应用程序。在ASP程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP程序源代码的失密而一同失密。
3)把数据库的扩展名强行改为*.asp格式,用户即使知道数据库路径名称,因为ASP文件是在服务器端解释后返给客户端的,Access数据库强行以ASP文件方式读取就会出错而防止了下载。
2.2 Access数据库的密码被破解
设置数据库密码机制,是Access安全的初级防范措施,因为Access数据库的加密机制是通过用户输入密码与某一固定的密钥进行异或形成一个加密串,针对这种特性现有很多专门破解Access数据库的加密密码的软件,因此用户即使对数据库设置了密码,如果数据库被下载,解密是非常容易的。
相应对策:加密口令:口令是系统中最敏感、最关键的信息,要实现口令的安全管理和动态更新,口令信息应保存在数据库中,且不要以明文存在,防止被截取。比较简单的做法就是利用脚本语言在管理的客户端用户提交时加密后再传送,服务器中数据库直接以加密后的编码存储,即使用户得到并打开了数据库也不会轻易了解加密后的编码含义。
目前,也有不少中小型企业采用微软提供的另一个数据库SQLServer
作为后台数据库,它的优点是查询简单,有充分的internet技术支持。但SQL和ACCESS一样,也存在许多安全隐患。
2.3 SA账户权限高
SQL提供了一个默认口令空白的SA账户,该账户具有超级用户的权限,它可以操作任何数据库,还可以操作注册表,甚至可以执行外部程序,一旦被入侵,后果不堪设想。
相应对策:设置一个强壮的SA账户口令,并且限制这个账户的使用,还要定期修改口令以防止口令扩散或者被太多的管理员所使用。另外最好使用Windows身份识别或者仅使用Windows模式,采用这种方式,则攻击者必须首先向这个域验证身份,而不是仅向SQL服务器验证身份。
2.4 用SQL语句作密码验证容易被绕过
绝大部分网站采取验证用户名和密码的办法进行用户身份识别,一般是通过下列select语句查找:Select*from用户表whereusername=”&user
name&”and pwd=”&pass&”,此时只要构造一个特殊的用户名和密码,如:abc”or”1”=”1,由于有or运算符和“1=1”恒成立条件,数据库的所有记录都满足此条件,因而可绕过密码验证,实现登录。
相应对策:1)过滤变量输入中的非法字符,如使用replace函数屏蔽单引号。2)把验证分成两步:先验证用户名,用户名合法后,再验证密码。
3 ASP代码的安全
由于ASP是非编译性语言,其源代码很容易被下载,也可以在浏览器的地址栏中输入地址而不用经过密码验证就直接进入某一页面,而这一页面可能是必须具备系统管理员的权限才能看到的页面。
相应对策:
1)对ASP页面进行加密:一般有两种方法,一种是使用组件技术将编程逻辑封装入DLL之中;另一种是使用微软的Script Encoder对ASP页面进行加密。2)在需要验证的ASP页面开头处进行相应的处理,比如:可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。3)不要把密码、物理路径直接写在程序中。4)要在应用程序的Globa.asa文件上为适当的用户或用户组设置NTFS文件权限。
4 总结
目前Web数据库访问的多种技术中,比如CGI(通用网关接口)、JDBC、PHP、ASP,ASP以其开发周期短,存取方式数据库简单,运行速度快而成为众多网站程序员的首选开发技术。但是其网络安全性也是不容忽视的。做为一个ASP开发者,你必须关注NT和IIS的安全漏洞,从上面的讨论我们可以看到ASP的很多漏洞都是由IIS所引起的。同时ASP程序员在开发自己的网站时,要注意来自ASP程序设计不当所引发的安全问题。本文的研究还是非常初步的,还有许多问题值得进一步的深入研究。
参考文献:
[1]毕克,基于ASP的网络开发技术分析[J].电脑知识与技术,2006(20).
[2]王忠贤,基于asp.net在线测试系统的设计与实现[J].计算机工程与设计,2007.
[3]宋红,计算机安全技术[M].北京:中国铁道出版社,2005.