此文来源于:金刀客博客
1、加入!@#¥%……&*()这些特殊字符,同时将目录设的很深,这样在浏览器中访问的时候就会出现404错误,但是可以将字符进行编码之后再用工具下载。
2、把数据库的扩展名修改为asp。
如果仅仅是把mdb数据库扩展名修改为asp,照样还是可以下载。
如果我在数据库中写入没有闭合的asp代码,因为asp程序是在服务器执行的,那么asp程序就会出错,数据库自然就无法下载了。
这个最基本的方法就是在数据中写入二进制的<%,这个方法一般是在数据库中建立一个表notdownload,添加一个notdown字段,写入<%,哪么这个最基本防御方法就出来了。
代码
<%
db=”access.mdb” ’你自己数据库的地址
set conn=server.createobject(“Adodb.Connection”)
connstr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”&Server.MapPath(db)
conn.open connstr
conn.execute(“create table notdownload(notdown oleobject)”) ’添加notdownload表
set rs=server.createobject(“adodb.recordset”)
sql=”select * from notdownload”
rs.open sql,conn,1,3
rs.addnew
rs(“notdown”).appendchunk(chrB(asc(“<”)) & chrB(asc(“%”))) ’写入<%数据
rs.update
rs.close
set rs=nothing
conn.close ’关闭连接
set conn=nothing
%>
这段代码就是执行上面说的方法,appendchunk的作用就是将数据追加到二进制数据Field里面。
但是如果我在这个数据库中写入asp闭合符 号%>不是就不会出错了吗?
这样就出来了更深一层的防御。
比如如果我加入这样的代码<% loop <% ,loop是跳出循环的命令,如果我在数据库的不同位置插入无数个这样的代码,那么你想要完全闭合asp,那么将是难上加难,这也许是现在为止从程序中来 防治数据库被下载最成功的方法了。
我们现在可以对上面的代码进行一下改进。就以notdown.asp为例。
<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”936″%>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title> 防御access数据库被下载</title>
</head>
<body>
<%
db=”test.asp”
set conn=server.createobject(“Adodb.Connection”)
connstr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”&Server.MapPath(db)
conn.open connstr
conn.execute(“create table notdownload(notdown oleobject)”)
set rs=server.createobject(“adodb.recordset”)
sql=”select * from notdownload”
rs.open sql,conn,1,3
rs.addnew
rs(“notdown”).appendchunk(chrB(asc(“<”)) & chrB(asc(“%”)) &chrB(asc(“loop”)) &chrB(asc(“<”)) & chrB(asc(“%”)) &chrB(asc(“loop”))) ‘这里自由发挥了
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
response.write “防御access数据库被下载成功!”
%>
</body>
</html>
把上面的代码保存为notdown.asp,和数据库防治同一个文件夹,或者自己调整数据库的位置,然后在服务器端执行一次,执行后就把它删掉以免泄露数 据库位置,那么你的这个防御基本上就生效了。
9 回应 至“”防止Access数据库被下载”

对于服务器,我完全没有安全防范意识。。。
好方法,平时没见过的方法哟。
不过小企业站都不会考虑的那么多。
没管这么多
很牛比,目前zblog没有这个防范措施。
大王,我来了!向你求学来了!
好纠结。。。数据库独立出来看来真不是好事
对此完全没研究
万一有人攻击我
那我就基本挂了
我有个关于金融交易的程序要做,看能不能帮我做出来!