揭秘WEB开发中防止ACCESS数据库被下载的方法(2)_Access数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:谈ACCESS转化为SQL SERVER的注意事项
1.ACCESS的数据库中的自动编号类型在转化时,sqlserver并没有将它设为自动编号型, 2.转化时,跟日期有关的字段,SQLSERVER默认为smalldatetime型,我们最好将它变为 datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用 smalldatetim


5.数据库放在WEB目录外或将数据库连接文件放到其他虚拟目录下 
  如你的WEB目录是e:\webroot,可以把数据库放到e:\data这个文件夹里,在e:\webroot里的数据库 连接页中修改数据库连接地址为:"../data/数据库名" 的形式,这样数据库可以正常调用,但是无法下载的,因 为它不在WEB目录里!这个方法一般也不适合购买虚拟空间的用户。 


6.使用ODBC数据源。 
  在ASP等程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码 的失密而一同失密,例如: DBPath = Server.MapPath("../123/ abc/asfadf.mdb ") 
conn.open "driver={Microsoft Access Driver&nb sp;(*.mdb)};dbq="& DBPath 
  可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不 会存在这样的问题了: conn.open "ODBC-DSN名" ,不过这样是比较烦的,目 录移动的话又要重新设置数据源了,更方便的方法请看第7,8法! 


7.添加数据库名的如MDB的扩展映射 
  这个方法就是通过修改IIS设置来实现,适合有IIS控制权的朋友,不适合购买虚拟主机用户(除非管理员已经设置了)。这个 方法我认为是目前最好的。只要修改一处,整个站点的数据库都可以防止被下载。无须修改代码即使暴露目标地址也可以防止下载。&n bsp; 
  我们在IIS属性---主目录---配置---映射---应用程序扩展那里添加.mdb文件的应用解析。注意这里的选择的D LL(或EXE等)似乎也不是任意的,选择不当,这个MDB文件还是可以被下载的, 注意最好不要选择选 择asp.dll等。你可以自己多测试下 
  这样修改后下载数据库如:http://www.test.com/data/dvbbs6.mdb。就出现(404或50 0等错误) 


8:使用.net的优越性 
  动网的木鸟就写过一个防非法下载文件的"WBAL 防盗链工具"。具体可以登陆http://www.9seek .com/WBAL/ ; 
  不过 那个只实现了防止非本地下载的 ,没有起到真正的防下载数据库的功能。不过这个方法已经跟5法差 不多可以通过修改.NET文件,实现本地也不能下载! 

  这几个方法中,只有第7和8个是统一性改的,一次修改配置后,整个站点的数据库都可以防止下载,其他几个就要分别修改数据库 名和连接文件,比较麻烦,不过对于虚拟主机的朋友也只能这样了! 

  其实第6个方法应该是第5个方法的扩展,可以实现特殊的功能,但对于不支持.net的主机或者怕设置麻烦的话,还是直接用第 5个方法了,而且默认情况下第6个方法,依然可以通过复制连接到同主机的论坛或留言本发表,然后就可以点击下载了(因为这样的引 用页是来自同主机的) 

9.利用NTFS分区的文件权限设置(by percyboy) 
我们已经知道,ASP.NET 中使用 ADO.NET 访问数据库,通过 OleDb 的连接可以访问 Access 数据库— —我们非常常用的低端数据库之一。本文讨论了 ASP.NET 中可能看到的若干错误提示,从中看到&nb sp;Access 2000 和 Access XP 创建的数据库文件 ,在访问出现错误时会出现不太相同的错误提示。希望对大家有所帮助。另一个要点是,希望通过此文,使大家对 ASP. NET 中 Access 数据库文件的 NTFS 权限设置有所新的认识 。 


(一)实验过程 


为了叙述方便,举个具体例子做个实验:应用程序为 /test ,数据库存放在 D:\wwwr oot\test\data\db1.mdb,我们已经知道在 ASP.NET 中是以一个叫做 ;ASPNET 虚拟用户的身份访问数据库的,我们需要给这个账户以特定的 NTFS 权限才能 使 ASP.NET 程序正常运行。 



为了得到最严格的 NTFS 权限设置,实验开始时我们给程序最低的 NTFS 权限 : 

a) D:\wwwroot\test\data\ 文件夹的给用户ASPNET 以如下权限: 
允许 拒绝 
完全控制 &n bsp; □ & nbsp;□ 
修改 &nbs p; &nbs p;□ □ 
读取及运行 & nbsp; √ □ ; 
列出文件夹目录 ; √ □ 
读取 &nbs p; &nbs p;√ □ 
写入 &nbs p; &nbs p;□ □ 

b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限: 
√ 允许将来自父系的可继承权限传播给该 对象 



1.1 对于某个只包含有"SELECT"命令的aspx程序,上述权限设置运行时无障碍,即:上述权限 已经满足这类程序的运行了。 


1.2 对于包含有"UPDATE""INSERT""UPDATE"等命令的aspx程序, ; 

(a) 如果 db1.mdb 是 Access 2000 创 建的数据库,出现如下错误: 

"/test"应用程序中的服务器错误。 
--------------------------------------- 
Microsoft Jet 数据库引擎打不开文件D:\wwwroot\test\data\。&n bsp;它已经被别的用户以独占方式打开,或没有查看数据的权限。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误 以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OleDb.OleDbException: Microsof t Jet 数据库引擎打不开文件D:\wwwroot\test\data\。 它已经被 别的用户以独占方式打开,或没有查看数据的权限。 

分享:揭秘多表查询技巧
看到大家很多不会多,其实有个很简单的办法具体方法: 打开你的ACCESS 数据库对象(选择查询) 添加你要查询的表,可以是多个 然后选择他们关联的ID,然后下面选择你要查询的表字段 最后在 在空白处右键选择 SQL视图 得到正确的多表查询。 作者: jyhjyh 来源:

来源:模板无忧//所属分类:Access数据库教程/更新时间:2010-02-04
相关Access数据库教程