许多程序员在开发的时候都认为改了mdb后缀为asp就能防下载的概念
是错的!后台数据库被下载对于一个 asp+a ccess的网站来说无疑是一场惨绝人寰的灾难
今天找了各方的文章
归纳一下有以下
种办法防止数据库被下载
发挥你的想象力 修改数据库文件名不用说这是最最偷懒的方法但是若攻击者通过第三方途径获得了数据库的路径)就玩完了比如说攻击者本来只能拿到list权 结果意外看到了数据库路径就可以冠冕堂皇地把数据库下载回去研究了另外数据文件通常大小都比较大起再隐蔽的文件名都瞒 不了人故保密性为最低
数据库名后缀改为ASAASP等
此法须配合一些要进行一些设置否则就会出现本文开头的那种情况
()二进制字段添加
() 在这个文件中加入<%或%>IIS就会按ASP语法来解析然后就会报告错误自然不能下载了可是 如果只是简单的在数据库的文本或者备注字段加入<%是没用的因为ACCESS会对其中的内容进行处理在数据库里他会以 < %的形式存在无效!正确的方法是将 <%存入OLE对象字段里这样我们的目的就能达到了操作方法首先用notepad新建一个内容为 <% 的 文本文件随便起个名字存档接着用Access打开您的数据库文件新建一个表随便起个名字在表中添加一个OLE对象的字段然后添加一个记录 插入之前建立的文本文件如果操作正确的话应该可以看到一个新的名为数据包的记录
数据库名前加#只需要把数据库文件前名加上#然后修改数据库连接文件(如connasp)中的数据库地址原理是下载的时候只能识别& nbsp#号前名的部分对于后面的自动去掉比如你要下载http://wwwpcdigestcom/date/# mdb(假设存在的话)无论是 IE还是FLASHGET等下到的都是http://wwwtestcom/dat e/indexhtm (indexasp defaultjsp等你在IIS设置的首页文档)另外在数据库文件名中保留一些空格也起到类似作用由于HTTP协议对地址解析的特殊性空格会被编码为%如http ://wwwtestcom/date/ mdb下载的时 http //www testcom/date/ %mdb而我们的目录就根本没有%mdb这个文件所 以下载也是无效的这样的修改后即使你暴露了数据库地址一般情况下别人也是无法下载!
加密数据库首先在选取工具> 安全>加密/解密数据库选取数据库(如employermdb)然后接确定接 着会出现数据库加密后另存为的窗口存为 employermdb接着employermdb就会被编码然后存为 employermdb……要注意的是以上的动作并不是对数据库设置密码而只是对数据库文件加以编码目的是为了防止他 人使用别的工具来查看数据库文件的内容
接下来我们为数据库加密首先以打开经过编码了的 e mployermdb在打开时选择独占方式然后选取功能表的工具>安全>设置数据库密码 接着输入密码即可这样即使他人得到了employermdb文件没有密码他是无法看到 emplo yermdb 的
加密后要修改数据库连接页 如connopen driver= {microsoft access driver&nb sp(*mdb)}uid=adminpwd=数据库密码dbq=数据库路径这样修改后数据库即使被人下载了别人也无法打开(前提是你的数据库连接页中的密码没有被洩露)
但值得注意的是由于 Access数据库的加密机制比较简单即使设置了密码解密也很容易该数据库系统通过将用户输入的 密码与某一固定密钥进行 异或来形成一个加密串并将其存储在*mdb文件从地址&H开始的区域内所以一 个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何 Access数据库的密码因此只要数据库被下载其信息安 全依然是个未知数
数据库放在WEB目录外或将数据库连接文件放到其他虚拟目录下如你的WEB目录是e\webroot可以把数据库放到e\data这个文件夹里在 e\webroot里的数据库 连接页中修改数据库连接地址为……/data/数据库名 的形式这样数据库可以正常调用但是无法下载的因 为它不在WEB目录里!这个方法一般也不适合购买虚拟空间的用户
使用ODBC数据源
在ASP等程序设计中如果有条件应尽量使用ODBC数据源不要把数据库名写在程序中否则数据库名将随ASP源代码 的失密而一同失密例如 DBPath = ServerMapPath(……// abc/asfadfmdb )
connopen driver ={Microsoft Access Driver&nb sp(*mdb)}dbq=& DBPath可见即使数据库名字起得再怪异隐藏的目录再深ASP源代码失密后也很容易被下载下来如果使用ODBC数据源就不 会存在这样的问题了 connopen ODBCDSN名 不过这样是比较烦的目 录移动的话又要重新设置数据源了更方便的方法请看第法!
添加数据库名的如MDB的扩展映射这个方法就是通过修改IIS设置来实现适合有IIS控制权的朋友不适合购买虚拟主机用户(除非管理员已经设置了)这个 方法我认为是目前最好的只要修改一处整个站点的数据库都可以防止被下载无须修改代码即使暴露目标地址也可以防止下载&n bsp我们在IIS属性 ——主目录——配置——映射——应用程序扩展那里添加mdb文件的应用解析注意这里的选择的D LL(或EXE等)似乎也不是任意的选择不当这个MDB文件还是可以被下载的 注意最好不要选择选 择aspdll等你可以自己多测试下这样修改后下载数据库如http: //wwwtestcom/data/dvbbsmdb就出现(或 等错误)
使用net的优越性动网的木鸟就写过一个防非法下载文件的WBAL 防盗链工具具体可以登陆http://wwwseek com/WBAL/ 不过 那个只实现了防止非本地下载的 没有起到真正的防下载数据库的功能不过这个方法已经跟法差 不多可以通过修改NET文件实现本地也不能下载!
这几个方法中只有第和个是统一性改的一次修改配置后整个站点的数据库都可以防止下载其他几个就要分别修改数据库 名和连接文件比较麻烦不过对于虚拟主机的朋友也只能这样了!
其实第个方法应该是第个方法的扩展可以实现特殊的功能但对于不支持net的主机或者怕设置麻烦的话还是直接用第 个方法了而且默认情况下第个方法依然可以通过复制连接到同主机的论坛或留言本发表然后就可以点击下载了(因为这样的引 用页是来自同主机的)
利用NTFS分区的文件权限设置(by percyboy)
我们已经知道ASPNET 中使用 ADONET 访问数据库通过 OleDb 的连接可以访问 Access 数据库— —我们非常常用的低端数据库之一本文讨论了 ASPNET 中可能看到的若干错误提示从中看到&nb spAccess 和 Access XP 创建的数据库文件 在访问出现错误时会出现不太相同的错误提示希望对大家有所帮助另一个要点是希望通过此文使大家对 ASP NET 中 Access 数据库文件的 NTFS 权限设置有所新的认识