[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[文章整理]虚拟主机用户access数据库防下载方法

上一篇:[文章整理][asp.net]关于session过期的判断
下一篇:[文章整理][ASP]无限级分类的简单算法实现及代码重点讲解。

添加日期:2006/2/15 10:47:35 快速返回   返回列表 阅读5021次
虚拟主机用户access数据库防下载方法

目前使用asp+access架设的网站特别多,防止access数据库被下载是很多人关心的问题。
以下是比较常见的方法:
1.给数据库文件起一个复杂的名字,放在多层目录下。
2.mdb文件后缀名改为asp,里面加一个常说的nodown表。
3.数据库名前加"#"。
4.加密数据库。
5.数据库放在WEB目录外。
6.使用ODBC数据源。
大家到百度搜索“防止ACCESS数据库被下载的9种方法”,可以看到详细文章。
笔者认为上面的2,5,6三种方法才是行之有效的方法。

其实,虚拟主机的用户完全不必为这个问题烦恼。
虚拟主机一般提供了wwwroot,databases目录,wwwroot目录下所有文件可以通过WEB访问,而databases目录不能。很多人只是简单的把所有代码包括mdb文件放到wwwroot下,这样mdb文件是可以通过WEB访问的,不管你用什么另类的方法去保护它,它都是处于危险之中的。这时,请别忘了databases目录。

下面是我们常用的连接access数据库的代码。
=============================================


<%
dim dbPath,conn,connStr
dbPath=Server.MapPath("data/data.mdb") '取得mdb文件物理路径。
Set conn = Server.CreateObject("ADODB.Connection")
connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbPath 
conn.open connStr
%>


=============================================
当我们把mdb文件放在databases目录下时,dbPath就不能通过Server.MapPath()来取得了,直接用真实路径即可。
如:dbPath="D:\wwwroot\yourUserName\databases\data.mdb"。
大家可以通过输出Server.MapPath("某个文件"),来取得真实路径。

下面给出通用的代码:


<%
dim rootdir,myLocation,dbPath,conn,connStr
rootdir = Request.ServerVariables("APPL_PHYSICAL_PATH") '返回当前web application的物理路径,如:"D:\wwwroot\yourUserName\wwwroot\"
myLocation=inStrRev(rootdir,"\",Len(rootdir)-1) '取得倒数第二个\的位置。
dbPath=Mid(rootdir,1,myLocation)+"databases\data.mdb" '拼接字符串,得到mdb文件物理路径。

On Error Resume Next '开启容错机能,发生错误后继续执行。
set conn = Server.CreateObject("ADODB.Connection")
connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbPath
conn.open connStr
if Err.Number <> 0 then '如果有错误发生
    response.write "<b>提示:</b>建立数据库连接错误,请联系管理员。"
    conn.close
    set conn=nothing
    response.end
end if
%>


大家要修改的只是data.mdb的文件名,另外,上面的代码还可以解决%5C暴库的问题。
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved