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控制权的朋友,不适合购买虚拟主机用户(除非管理员已经设置了)。这个方法我认为是目前好的。只要修改一处,整个站点的数据库都可以防止被下载。无须修改代码即使暴露目标地址也可以防止下载。

  我们在IIS属性---主目录---配置---映射---应用程序扩展那里添加.mdb文件的应用解析。注意这里的选择的DLL(或EXE等)似乎也不是任意的,选择不当,这个MDB文件还是可以被下载的,注意好不要选择选择asp.dll等。你可以自己多测试下,修改后下载数据库,出现(404或500等错误)。

  8.使用.net的优越性

  动网的木鸟写过一个防非法下载文件的"WBAL防盗链工具"。

  不过那个只实现了防止非本地下载的,没有起到真正的防下载数据库的功能。不过这个方法已经跟5法差不多可以通过修改.NET文件,实现本地也不能下载!

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

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

  9.利用NTFS分区的文件权限设置(bypercyboy)

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

  (一)实验过程

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

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

  a)D:wwwroot estdata文件夹的给用户ASPNET以如下权限:

允许 拒绝
完全控制 &n bsp; □ □
修改 &nbs p; &nbs p;□ □
读取及运行  √ □ ;
列出文件夹目录 ; √ □
读取 &nbs p; &nbs p;√ □
写入 &nbs p; &nbs p;□ □

  b) D:wwwroot estdatadb1.mdb文件本身给用户ASPNET以如下权限:

  √允许将来自父系的可继承权限传播给该对象

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