很多编程人员在开发的时候都认为,改了mdb后缀为asp后就能防止数据库被下载,这种想法是错误的!下面的实验就是证明!
我在自己的电脑上做的测试,事先已经建立了虚拟目录xinwen,数据库文件nxnew.mdb放在了网站的data文件夹下面。
首先,将nxnews.mdb改为nxnews.asp,然后在IE地址栏输入“http://%20127.0.0.1/xinwen/data/nxnews.asp”,返回的页面是一堆乱码和数据库中的图片。
其次,右键单击该乱码页面,选择查看源文件,将弹出的记事本中的内容保存,更名为**.mdb,然后打开该文件,提示我输入密码,看来是头文件遭到了破坏。
最后,打开迅雷,然后通过迅雷下载当前页面,下载后的文件更名为**. md b,再一次进行打开操作,成功打开!数据库就这样被成功下载了!
总结:我们发现,仅仅是简单的通过更改后缀名来防止数据库被下载是有很大缺陷的。事实上即使你将扩展名改为.asp,数据库仍然可以被下载,因为这个文件里不含<%或%>等标签,所以IIS不对这个文件作任何处理,下载的数据库和原数据库完全一样!
解决方案:思路很简单,在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以< %的形式存在,无效!正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。
下面是我从网上找到的防治Access数据库被下载的常用安全措施:
1.发挥你的想象力 修改数据库文件名
不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了。比如说攻击者本来只能拿到list权,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,起再隐蔽的文件名都瞒不了人。故保密性为最低。
2.数据库名后缀改为ASA、ASP等
此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况
(1)二进制字段添加(具体的还不清除 )。
(2)在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是假如只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以< %的形式存在,无效!正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。
作方法:
首先,用notepad新建一个内容为 <% 的文本文件,随便起个名字存档。
接着,用Access打开您的数据库文件,新建一个表,随便起个名字,在表中添加一个OLE对象的字段,然后添加一个记录,插入之前建立的文本文件,假如操作正确的话,应该可以看到一个新的名为“数据包"的记录,asp学习网。即可
3.数据库名前加“#”
只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别 #号前名的部分,对于后面的自动去掉,比如你要下载:http://www./date/#123.mdb(假设存在的话)。无论是IE还是FLASHGET等下到的都是http://www.test.com/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)
另外在数据库文件名中保留一些空格