在 ASP 中防止 Access 数据库被下载的“常用”方法大多是:
- [点这里] 下载到一个 Access 文件,其中包含一个特殊的表,你把它复制(包括数据)到你要保护的 Access 中;
- 然后把你的 Access 重命名为 *.asp。
经过这样的步骤,这个 Access 即使放在 Web 目录中也不会被下载。
| 注意:正如思归(saucer)说过的那样,这并不是最好的解决方案;如果有可能的话,把 Access 文件放在非 Web 目录中或者合理的设置 NTFS/IIS 权限,会更好一些。 但并不是所有情形中都可以这么解决,因为可能有时候你并没有直接操纵服务器的资格,那么也只能这么 BT 地解决了。 |
虽然在 ASP.NET 中仍然可以采用上面的方法去做(如果你的服务器同时支持ASP 的话),但显然会有更多其它的方案,如下的几种可以供你参考:
- 将你的 Access 重命名 *.asax:因为 ASP.NET 的处理机制中,默认情况下,对这样的请求是直接拒绝的,并不会有上面思归提到的解析过程耗费资源等问题;
按照这个思路,其实还可以把 Access 重命名为 *.config,*.vb, *.cs 等等。 - 将你的 Access 放在你的应用程序根下 bin 目录(也就是你放置 DLL 文件的那个目录)中:已经发现,IIS 默认被配置为拒绝直接访问 bin 目录中的文件,用以保护对 DLL 的请求,事实上也同时保护了放在 bin 目录中其他文件。
(转载请注明出处)
打印 | 张贴于 2003-11-25 09:41:00 | Tag:暂无标签
留言反馈
不信你用网际快车下载一下试试就知道乐了~~~还有就是如果你没有对"<>"做好过滤的话,还可以构造出asp程序代码,然后post数据,执行你的代码... 哈哈..下面你就完了~~~~~~~~~~
2。在Web。config , httpHandlers 节加
<add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler"/>
访问时就回出现下列错误
This type of page is not served.
!!
Enjoy!
应该是你已经改动了 IIS 的默认配置。
我在 Windows Server 2003 中测试过这种方案,但我只保证在 IIS 6 默认的初始配置中可用,如果你有其他改动,则无法保证。
#asdf.asa
带"#" 就可以 #在URL 是描点
^0^
你自己可以试试看,
不要大惊小怪的写那么多叹号和问号。
右键“目标另存为...”怎么办???!!!
这样做会不会有这样的后果,数据库读写时会造成程序集被频繁的刷新,也会Session和Application不断丢失。
very good!!!
严格的说,思归给出的方案是更好的:即将 Access 放到 web 目录之外,使它不能通过 URL 访问到;如果还不相信,再设法加上 NTFS 权限设置关卡。
稍微大一些的企业都会选择更专业的数据库服务器,比如 SQL Server / Oracle 等。基于 Access 数据库的 web 程序的使用者往往是个人,或者是小型企业,他们租用的是目前市场中流行的三四百元到七八百元不等的虚拟主机。
这些虚拟主机往往无法接触到 NTFS 权限操作,甚至连 IIS 也难得接触到,使得很多在自己机器上很容易的东西变的很头疼。这也是为什么在 google 上面搜索“Access 防下载”能够看到一大堆链接的原因。
我文中提到的方法主要适用于他们。(我也有这样的空间。)
目前市面上的此类型虚拟主机,NTFS权限往往是“Everyone完全控制”,IIS默认设置。