思归呓语

衣带渐宽终不悔,为伊消得人憔悴
随笔 - 396, 评论 - 2964, 引用 - 245

导航

工具

关于

标签

每月存档

广告



访客

 

在任何社区ASP版转悠过的人,大概在某个时候都会见到这样的问题“asp应用access数据库如何保障数据库不被下载?”

很多人(包括MVP)的答复是,重新命名,把.MDB扩展名改成.ASP。乍看一下,这是个非常聪明的方法,因为换成.ASP扩展名后,IIS就把文件转给ASP.DLL解释去了,好像不能被下载了。

非常简单明了,对吧?

但确实是这么简单么?

首先,这文件还是会被解释,如果你的数据库有几十个M的话,当某个恶意用户试图访问时,系统还是会把文件调进内存,解释一番。

其次,ASP只解释<% ... %> 和 <SCRIPT runat="server">....</SCRIPT> 间的东西,其他的东西还是会原封不动地显示的,如果你在浏览器里看不到什么,看一下源码就知道了。

再次,假如你的某个表里的某个TEXT字段里有类似这样的内容(不可能?假如你的应用里需要用户输入什么文字,你又不过滤输入文字的话,非常有可能的)

<%
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile("ThePathToSomeImportandFileForExampleGlobal.asa")
%>

你觉得恶意用户直接访问该数据库文件时会发生什么?

比较好的答案是在网络服务管理器里把数据库文件或所在目录(假如你的数据库文件们是在某个单独的目录的话)设成不能读/写,但在资源管理器里给予IUSR_机器名(或者你设置的匿名帐户)读/写的权利,参考这个FAQHow to configure HTTP READ-Protected Folders

当然,但愿我是杞人忧天。

相关文章

Loading...

打印 | 张贴于 2003-10-18 21:33:00 | Tag:暂无标签

留言反馈

#re: 简单的问题 编辑
如果把#转义成%23呢?
2005-11-04 11:11:00 | [匿名用户:Workingbird]
#re: 简单的问题 编辑
我记得好像是第一个字符是#号的MDB是不会被下载的。
所以改成#DBName.ASP这样应该就可以了吧。
2005-09-20 16:40:00 | [匿名用户:lucky]
#re: 编辑
Good!
2005-04-14 03:10:00 | [匿名用户:尖锐湿疣]
#[原创].NET中防止Access数据库下载 编辑
Ping Back来自:blog.csdn.net
2005-04-12 01:28:00 | [匿名用户:X-Forever]
#回复: 简单的问题 编辑
不可以用.asa擴展名


一樣會被下載的。

2003-11-25 11:09:00 | [匿名用户:安]
#回复: 简单的问题 编辑
还好,我的主机是有单独的数据库目录的:)
2003-11-02 11:13:00 | [匿名用户:ceocio]
#回复: 简单的问题 编辑
在MDB文件名前加#如何?
2003-10-27 23:31:00 | [匿名用户:coldice]
#回复: 简单的问题 编辑
在购买的虚拟主机上,设置目录的权限几乎不可能。
可不可以用这个比较无聊的办法:给自己的 mdb 文件起一个怪异冗长的文件名,防止被猜测名字而下载?
2003-10-20 15:58:00 | [匿名用户:sinzy]
#回复: 简单的问题 编辑
又是个老问题了,我的建议一般是,如果有这样的权限的话……

1、把FileSystemObject的调用名称改掉,不给普通用户使用。

2、MDB数据文件不要放在站点的WEB目录中,比如可以有这样的结构

d:\InetPub\xxx.com\
--wwwroot
--logfile
--datafile

这样,wwwroot可以作为站点根目录,datafile存放Access数据库文件等,logfile放站点日志

如果有思归上面说的那种程序漏洞的话,即时作了上述处理,我想还是很容易泄露数据库位置,还可以通过ASP里的Stream下载……
2003-10-19 17:23:00 | [匿名用户:SunADM]
#回复: 简单的问题 编辑
一般来说,Global.asa文件是不能直接通过URL来访问的,至少IIS中对此进行了限制,是否把MDB修改成ASA就可以保障安全了呢?
2003-10-18 22:56:00 | [匿名用户:sungoodnews]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System