防止ACCESS数据库被下载的一些解决方法
来源:互联网
下面的方法分别适用有IIS控制权和 虚拟空间的用户!
1:改名数据库。
如将数据库database.mdb改成dslfjds$^&ijjkgf.mdb等。这个是最基本的。我想现在也没有多少连数据库文件名都懒得改的人吧?至于改成什么,你自己看着办,至少要保证文件名复杂,不可猜测性。
2:修改数据库后缀。
一般改成database.asp 、database.asa、 database.inc、 database.cgi、 database.dll等等,注意要在IIS中设置这些后缀的文件不能被解析。 如果真正要起到防止下载的作用,要进行一些2进制字段添加等设置,---一句话,繁而复杂
3:第3个方法就是通过修改IIS设置来实现,这个方法适合有IIS控制权的朋友,不适合购买虚拟主机用户。这个方法我认为是目前最好的。只要修改一处,整个站点的数据库都可以防止被下载。无须修改代码。即使暴露目标地址也可以防止下载
我们在 IIS属性---主目录---配置---映射---应用程序扩展那里注册.mdb文件的应用解析。
即随便找个.dLL文件解析MDB文件。。
通过以上设置,是不能直接下在mdb文件的,如本站论坛里的一个数据库
http://www.53hao.com/data/guanggao.mdb
可以被论坛正常调用,但是下载的时候只显示404错误。
4:虚拟主机的朋友,由于没有IIS控制权。但也只需要修改部分文件和数据库文件名,即把数据库文件前名加上#、然后修改数据库连接文件如conn.asp。
原理是下载的时候只能识别#号前名的部分,对于后面的自动去掉,所以也起到防止下载的作用。同理,空格号也可以起到'#'号作用,但必须是文件名中间出现空格。
(此方法不安全)
5. 将数据库连接文件放到其他虚拟目录下。
6:加密数据库。适合没有IIS控制权
access 数据库打开后,有加密选项的,加密后修改数据库连接页,如conn.asp:
如下行
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="------
这几个方法中,只有第3个是统一性改的,一次修改配置后,整个站点的数据库都可以防止下载,其他几个,就要分别修改数据库名和连接文件。比较麻烦。
这几个方法各有长短,为增加保险性,可以几种方法同时使用。 但最主要的还是需要系统和IIS本身设置足够安全并且加上好的防火墙软件, 否则再好的安全设置也是会攻破!
对ACCESS数据库安全的一点见解
来源:零魂's Blog
一、数据库防下载处理
要保证ACCESS数据库的安全,首先当然要做好防下载处理,网上流传着很多防下载的方法,但是有很多方法纯属鸡肋,我也先简单总结下这些防下载处理的效果。
1.给数据库改个变态的名字。
黑客当然不可能全靠猜来获取数据库路径........
2.改成asp后缀。
这是最不可取的方法,黑客很容易就能往数据库里面插入一句话木马。
3.数据库名字里面加“#”。
“#”改成"%23"就可以轻松绕过,照样不可取。
4.数据库名字里面加“#”,然后后缀也改成asp。
“#”改成"%23"照样可以轻松插马。
5.数据库里写入防下载表,其实是写入二进制的“<%”,有些还写两个,再把后缀改成asp。
这个方法比前面的几个都要好,但是已经有牛人想到了突破方法,我记得好像是在特定的地方插入单引号把防下载表注释掉(具体方法忘了),所以还是不够安全。
6.把数据库放到非wwwroot目录。
这个方法也不错,conn里面数据库的路径写成类似“../../data.mdb”就可以正常访问wwwroot以外的数据库了(有很多空间FTP根目录都有不在wwwroot的data目录)。但是有些网站程序有类似与"down.asp?path=../../data.mdb"这样的下载页面,可以下载wwwroot以外的文件所以也不是绝对安全。
7.在IIS设置里把数据库文件重定向到其它URL。
这个方法的安全性是肯定的,不过局限性太大,必须要有服务器的完全控制权才行,也就是说,虚拟空间是没法这样的。
我推荐的方法是:去掉数据库的后缀。
这个方法最初是我的学长"乱雪"想出来的(参见:http://0xx.org.cn/show-25-1.html)。
我和他简单研究了下,发现把数据库的后缀名去掉后,下载的时候2003的系统会把它当成目录,所以无法下载。XP的仍然可以下载,但是我想不会有人用XP做服务器的。
本来乱雪想的是再在数据库名字后面加个“%2f”,就是“/”的URL编码,下载的时候“%2f”会被解析成“/”,不过我觉得这个改法是多此一举,因为我们可以像把“#”改成"%23"那样把“%2f”改成“%25%32%66”就又可以下载了。
所以只要我们把数据库的后缀名去掉,就基本可以达到防下载的目的了。这个方法我是屡试不爽,如果哪位朋友可以突破它,一定要告诉我哈。
二、用户密码加密处理
刚才只说了数据库的防下载处理,但是数据库的安全不只是防下载。如果我们再多插一道门,即使数据库万一被下载了,也不至于立马受到损失。
我推荐的方法是,用户的密码经过两次MD5加密后再入库。
一般黑客得到数据库都是去破解管理员密码的MD5,现在www.cmd5.com上已经能破解出来相当强悍的密码了。但是如果我们把密码经过两次MD5加密,就是把第一次MD5加密后的密文再一次进行MD5加密后再存入数据库,我看谁敢说他能把密码跑出来,嘿嘿。
这里以我用的Z-Blog为例简单说一下。
(也可以参见我的Blog上的文章:http://www.zerosoul.cn/post/25.html)
先打开机子上zblog的文件夹,点搜索,在包含文字那输入“md5”,再点立即搜索,搜到了好多,我们只需找到有类似“Pass=md5(GetPass)”的文件就行了。最后经过我的刷选验证得知,只需修改三个文件就可以了。分别是
1.\PATH\login.asp
2.\PATH\ADMIN\edit_user.asp
3.\PATH\XML-RPC\index.asp
其中PATH代表zBlog的路径。把这几个文件中类似pass=md5(password)的语句改成pass=md5(md5(password))就可以了。
具体改法:
1.\PATH\login.asp,在大概75行到85行左右
strPassWord=MD5(strPassWord) -----------------> strPassWord=MD5(MD5(strPassWord));
2.\PATH\ADMIN\edit_user.asp,在大概190行到200行左右
document.getElementById("edtPassWord").value=MD5(document.getElementById("edtPassWord").value)
-------------------->
document.getElementById("edtPassWord").value=MD5(MD5(document.getElementById("edtPassWord").value));
3.\PATH\XML-RPC\index.asp,在大概70行左右
BlogUser.PassWord=MD5(userPassWord)---------------------> BlogUser.PassWord=MD5(MD5(userPassWord))
改完后保存就可以了。
最后还要把数据库打开,复制密码原来的md5值,打开www.xmd5.com,先点加密,再把md5粘贴进去,点“给我转”,再把32位哪个复制回数据库就可以了(Z-Blog用的是32位加密,如果是16位当然就复制16位的那个啦)。
然后我简单测试了下:登陆后台成功,添加用户成功,而且数据库里存的的确是两次加密的md5值。
本机搞好后,我就把网站上的3个文件和数据库修改替换一下,网站上的也就好了。
经过上面的几步,我们的数据库是没有后缀的,目前基本是没法下载的。如果万一哪天有高人想到了无后缀文件的下载方法,即使他下载下来数据库,放在他面前的还有两次MD5加密的管理员密码,估计他也无法再继续了。