不让数据被下载一般有以下几种方法,但是方法不是绝对的,我们可以结合几种避免下载数据库的方法来做。一、将数据库文件的扩展名改为.asp 缺陷:事实上即使你将扩展名改为.asp,数据库仍然可以被下载,因为这个文件里不含<%或%>等标签,所以IIS不对这个文件作任何处理,下载的数据库和原数据库完全一样! 解决方案:思路很简单,在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。 可是如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以< %的形式存在,无效! 正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。 至于怎么往里加我就不废话了。如果你不会或者嫌麻烦,我已经做好了一个数据库,你下载回来后,在ACCESS中把里面那个表粘贴到你的数据库里,表名随便,然后别忘了将数据库的扩展名改成.asp,这样就ok了。其实写一个ASP页来做最方便,不过我比较懒,哈。谁空闲时间多就写一个吧。
二、改名为global.asa:注意,只把扩展名改为asa没用!必须全名是global.asa!不过我不知道这样会不会对网站正常运行产生影响,比如性能下降之类。
2。用DSN连接:这样最稳妥,但要麻烦网管,很多人没这个条件。
3。扩展名改cgi:条件是你的空间必须同时支持CGI。
4。我的方法:楼上那位popcode(紫枫.net) 帖的是我去年在动网帖的,现在升级了:扩展名改ASP,然后运行一次下面的脚本。
原理就是让文件内有不成对的<%号,让IIS报500错。
<%
Dim Cnn,StrCnn,StrSQL,rsTest,db
db = "test.asp" '数据库的文件名,请改成你的文件名。
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
Cnn.Open StrCnn
strsql = "CREATE TABLE _nodown (nodown Nvarchar(50) WITH COMPRESSION)"
set rstest=cnn.Execute(strsql)
strsql = "insert into _nodown (nodown) values ('<%<%')"
set rstest=cnn.Execute(strsql)
Cnn.close
Set rsTest = Nothing: Set Cnn = Nothing
Response.Write "OK!"
%>
注意,只把扩展名改asp是没用的。
三、另外两种方法:
1.改名。
把扩展名改为asp,inc都可以,因为这些要经过ASP.DLL处理,不直接下载。
调用也一样,只是扩展名变变就是了。比如:
<%
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("data.asp")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>
2.改路径
把路径改为不是其他用户可以访问的目录,或者是权限。
所以,你根据自己的情况来选择,当然,还有其他的方法。
四、采用ODBC数据源DSN或将数据库文件放在较深目录,并起一个像09432432fdsafd.mdb的名字(这种方法也不十分安全,但较为简单有效).
代码被看到也很危险,为有效地防止ASP源代码泄露,可以对ASP页面进行加密。可对ASP页面进行加密或采用组件技术