如何防止Access数据库被下载?
因为Access数据库是以文件的形式存放在服务器上,所以理论上存在着被下载的可能。如果数据库中存放着一些重要数据,甚至包括用户名、密码或者客户资料等等,那么我们就必须考虑到数据库的安全性,防止别人直接从网上下载我们的数据库。到底如何防止Access数据库被恶意下载呢? 首选的方法当然是把数据库放在Web目录之外。也就是说,不把数据库放在可以直接被访问的Web目录之内,在ASP程序连接数据库时使用数据库在服务器上的绝对路径。这可以说是最保险的方法。 如果没有条件达到上述要求,必须把数据库放在Web目录中呢,又如何有效的防止数据库被下载? 第一要做的就是给数据库取一个长而且复杂的文件名,放在一个名称复杂的的文件夹下,这虽然只是简单的一个操作,却可以避免你的数据库地址被轻易的获得。当然这是仅仅不够的,我们不能保证别人不能用某种的手段或方法获得你的数据库地址。所以我们还要用一些其它的方法。 有不少人认为只要把数据库的.mdb扩展名改为.asp或.asa就可以防止被下载(如flash8data.asp),其实这是错误的!这样只能做到无法从IE地址栏直接下载,而用诸如FlashGet这类下载软件则可以顺利的下载!如果要改为.asp的话,还必须在数据库中添加一个“OLE对象”的字段,再在这个字段中添加一个内容为<%的长二进制数据,这样也可以避免被下载。 也有不少人认为只要在数据库的文件名中加入“#”号就可以防止被下载(如flash8#data.asp),其实这也是错误的!这样做的原理是IE会把“#”当成网页的锚记而显示“无法显示网页”,但是其实同样可以用FlashGet下载。 这里给大家介绍一个防止数据库被下载的简单有效的方法,就是在数据库的文件名中加入“%”号。比如:\^data&base^\%flash8=!=data%.mdb
这是利用url字符编码的原理,在访问Internet中的数据时,不论是IE还是其它下载软件,都会把符号或双字节字符转换为"%**"(其中**为16进制数据)这样的编码,同样在遇到"%**"这样的字符会进行反编码,所以在上述文件名中,会试图把“%fl”转换为相应的字符,文件名就发生了改变,所以就达到了不被下载的目的。其实这里的FL不是16进制的值,所以下载时服务器会直接报错,如果是16进制的值比如24,则会反编码为“$”号,如%24data.mdb会被转换为$data.mdb,服务器则会显示找不到文件。如果你再狠一点,可以在相同的目录下再放置一个$data.mdb的伪数据库,呵呵,下载的人还会以为捡到了宝,实际上他“辛辛苦苦”下载到的是一个毫无价值只是用来欺骗他的文件。