以文本方式查看主题

-  康柏仕电脑学院  (http://combss.com/bbs/index.asp)
--  Dreamweaver网站设计交流区  (http://combss.com/bbs/list.asp?boardid=48)
----  Access数据库防下载方法  (http://combss.com/bbs/dispbbs.asp?boardid=48&id=360)

--  作者:superpch
--  发布时间:2007/8/1 9:04:14
--  Access数据库防下载方法
首先我们要对数据库进行防下载处理,将以下代码保存为ASP文件:

<% 
db="data.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)") 
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 
%>  

保存为set.asp,代码中的数据库地址改成要进行防下载处理的数据库,运行这个ASP文件后会在原来的数据库里加一个notdownload表。处理完后记得将后缀名改为asp上传使用!

    然后,可以修改数据库名。这是常用的方法,将数据库名改成怪异名字或长名字以防他人猜测。但是如果被猜到数据库名则还能下载该数据库文件,但机率不大。如:将数据库database.mdb改成fjds$^&ijjkgf.mdb这种名称,当然,如果被爆出了数据库也就没有办法了。。。[wink]

    同样,在修改文件名的同时也可以修改数据库的后缀名。如改成database.asp、database.asa、database.inc、database.dwg、database.dll等等,但注意要在IIS中设置这些后缀的文件可以被解析,这样直接访问这个数据库文件时将会象程序一样被执行而不会被下载,以避免数据库被其他人获取而使网站安全受到影响。

    将数据库database.mdb改成#database.mdb。这是最简单有效的办法。假设别人得到你的数据库地址是:http://www.yourserver.com/folder/#database.mdb,但实际上得到将是:http://www.yourserver.com/folder/,因为#在这里起到间断符的作用。地址串遇到#号,IIS解析时自动认为访问地址串结束。但是要注意:不要设置目录可访问。用这种方法,不管别人用何种工具都无法下载,如flashget,网络蚂蚁等。但在有的虚拟主机上这样更改后会出错,原因未知,估计跟虚拟主机的设置有关。
注:只要数据库文件名任何地方含有'#',别人都无法正常下载。同理,空格号也可以起到'#'号作用,但必须是文件名中间出现空格(将空格写为%20)。

    修改IIS设置。 只要修改一处,无需修改代码,即使暴露了数据库的目标地址,整个站点的数据库仍然可以防止被下载。在 IIS属性---主目录---配置--- 映射---添加对.mdb文件的应用解析。  
即任意找个.dLL文件解析MDB文件。通过以上设置,数据库可正常使用,但在直接下载数据库mdb文件时则会显示404错误。[lol]

    最后这种方法最为保险,只需要设置一次即可,而其它方法可能还会需要修改conn.asp文件,但是这种方法需要你拥有自己的独立主机而不是虚拟主机,要求高了点,嘿嘿~~

    另外多句嘴,不管改成啥后缀,数据库文件记得用二进制模式传送,否则会出错滴~