旧话重提,ASP开发中数据库地址暴露的问题!因昨天发现google暴露数据库地址的问题想到的!

来源:互联网 发布:加工中心编程软件排行 编辑:程序博客网 时间:2024/06/11 11:21

关键字:ACCESS,数据库下载,IIS安全

http://blog.csdn.net/qunluo/archive/2004/07/17/44092.aspx(google暴露数据库地址文章地址)

这个问题,我老早以前就知道的安全问题了,不知道是我的运气好还是水平太臭,我的程序一直没有人光顾过,至少我的数据库只是我在自己的网上测试过,在某些情况下ACCESS的数据库还是可以下载,当然这个服务器管理员水平问题有一定关系。至于有人说将数据库名称写得尽量古怪一些,我是不敢相信你能够想到的究竟能够有多复杂。当然如果你的程序除了你自己看过外,别人没见过,那还是可以起到一定作用。当然这个时候你的数据库所在目录是不能开放目录浏览权限的!

后来知道了改数据库为ASP后缀或者是ASA之类可以避免类似问题。但是这还是得配合服务器端配置才可以起到一定作用,到现在我也不知道这不是真的是 经过事实验证的了。不得而知!但是网上搜索看看,肯定第一条就是这样说的:“数据库扩展名称改为ASP后缀”!呵!呵!真这样做了就安全了么?只能够说不一定,为什么,因为这个文件里不含<%或%>等标签,所以IIS不对这个文件作任何处理,下载的数据库和原数据库完全一样! 还是和服务器配置有关系了!

所以另外一方面,还知道可以在ACCESS里加上包含“<%"符号的OLE字段信息,可以防止下载。也是不知道是否就是那样所说的安全了呢?但是至少在地址栏打上数据库地址,的确是乱码显示用点击下载该数据库是无法下载了。我在自己的机器上和服务器上(虚拟主机空间上)经过验证证实这点。

但是还有个问题值得提出来说一下,用flashget之类工具来下载呢?还听说数据库名称加#这样的符号可以防止下载,也是可以的,理基当然是于锚点。下载的时候只能识别 #号前名的部分,对于后面的自动去掉,自动认为访问地址串结束。比如你要下载:http://www.mysite.com/date/#123.mdb(假设存在的话)。无论是IE还是FLASHGET还是蚂蚁等下到的都是http://www.mysite.com/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)

结合上面的符号问题,另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为"%",如http://www.mysite.com/date/123 ;456.mdb,下载的时http://www.mysite.com/date/123%456.mdb。而我们的目录就根本没有123%456.mdb这个文件,所以下载也是无效的这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!

还有一点,安全做法就是使用DSN配置你的数据库,将数据库放置在非c:/inetpub/wwwroot/myasp目录外。然后在数据库驱动连接里,使用DSN方式连接。呵!问题是除非是自己的服务器,否则。那个公司给你在他们自己的服务器上替你做这样的配置呢?(为什么?如果你改了自己WEB程序的数据库内容需要重新上传,然后一次次骚扰工作人员为你做不同的配置。比如更改该数据库摆放的位置,你就得让人家给你另外配置你的数据库DSN了!对于很多做个人网站的人而言。也算是不可行的做法,尽管算是安全了。(而且这种做法多少是要牺牲一些数据库效率和性能为代价,微软站上我记得好像都不推荐这样做(使用DSN连接)

对了,有部分人(刚接触计算机和WEB开发)还会认为给数据库设置密码应该就安全了。conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq=数据库路径"这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)但值得注意的是,由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行“异或”来形成一个加密串,并将其存储在*.mdb文件从地址“&H42”开始的区域内。所以一个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息安全依然是个未知数。而且现在网上这样的软件多得很,已经不是什么秘密了!

暴露数据库连接地址的问题,我现在想起来,可以保存在Global.asa 这个很少有人注意到的文件里!以后在适当的位置触发使用!我是没这样使用过,也是听其他网上的朋友说起来。也不知道是否可行!就程序而言结合Adodb.Stream 使用,在IE地址栏防止下载也是可以做到的,过几天放上这个东西。

还知道在是不是做到以上几点就已经是非常安全了,我是持疑问的!当然我指的不是黑客黑了服务器的可能,如果都这样了,服务器就是人家手里的机器,那还用多说什么。呵!!看来,我们的服务器网络管理员的工作在一定程度上来说,还是决定了我们程序是否有市场的关键,呵!!

****************************

注:非ACCESS数据库不在本文讨论范围之内!

 

原创粉丝点击