立即停止关于“防止ACCESS数据库被下载的方法”的讹传

讹传确实很害人!

大家学习 ASP 一开始就知道要保护 Access 数据库被直接下载,那时流行的做法是:将 Access 数据库比如 data.mdb 改名为 data.asp。这是一个很严重的“讹传”。

因为这种方案并不管用:比如 http://www.abc.com/data.asp ,我们直接在 IE 中敲地址得到是一个空白页面。如果查看此页的“源代码”,然后保存为 data.mdb,我们发现 Access 并不识别它。这就是这一讹传流传很久的表面现象。

其实,简单的写一行 HTML,类似下面的:

<A href="http://www.abc.com/data.asp">点这里下载</A>

然后保存为 test.html 到你的桌面,然后打开它,右击该链接,选择“另存为...”,注意存盘时把扩展名改为 mdb,这时你得到的这个 data.mdb 就可以成功的在 Access 里面打开了。

现在,随着大家认识的提高,持有上面这样“天真”想法的人已经不多了。

今天,在搜索东西偶然看到一篇文章,因为其中引用了我的一篇旧文,所以发现了它:

防止ACCESS数据库被下载的9种方法 [整理版]

(截至目前,这篇文章已经被浏览了150多次,引用高达70多次。另外google搜索的结果表明:它已经被转载至很多地方。)

在这篇文章中有一条方案是无效的,文章是这么写的:

3.数据库名前加“#”
  只需要把数据库文件前名加上“#”,然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别“#”号前名的部分,对于后面的自动去掉,比如你要下载:http://www.pcdigest.com/date/# 123.mdb (假设存在的话)。无论是 IE 还是 FlashGet 等下到的都是http://www.test.com/date/index.htm (或index.asp、default.jsp等你在 IIS 设置的首页文档)  
  另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为“%20”,如 http://www.test.com/date/123 456.mdb,下载的时 http://www.test.com/date/123%20456.mdb。而我们的目录就根本没有 123%20456.mdb 这个文件,所以下载也是无效的。这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载! 

“#”号方案的不可行性:其实在较早的一篇博客堂文章(链接已失效)中已经提到这个问题了。将“#”号替换为“%23”就可以突破这个“关卡”了,比如: http://www.abc.com/#data.mdb,就直接在浏览器中输入: http://www.abc.com/%23data.mdb 就可以下载了!

空格方案就不必多说了,我在本机的试验证明,在浏览器地址栏中直接写 http://localhost/test data.mdb 没有任何问题很顺利就下载到了这个 test data.mdb,不知作者是什么解决方案。

希望这次“讹传”能够就此很快结束!不要给更多的人带来坏影响!

posted on 2004-10-26 20:12  破宝  阅读(206)  评论(0编辑  收藏  举报

导航