当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .NET中防止Access数据库下载

ASP.NET
C# Quoted-Printable编码、解码
asp.net Google的translate工具翻译 API
.NET读取所有目录下文件正则匹配文本电子邮件
asp.net 半角全角转化工具
AjaxControlToolKit 显示浏览者本地语言的方法
asp.net HTML文件上传标签
ASP.NET 绑定DataSet中的多个表
ASP.NET 重定向的几种方法小结
Asp.Net 重定向必须要知道的一些资料
ASP.NET 导出到Excel时保留换行的代码
Asp.Net Cache缓存使用代码
document.getElementsByName和document.getElementById 在IE与FF中不同实现
GridView单元格合并
asp.net 大文件上传控件
asp.net 日期函数 某月的第一天和最后一天的日期
asp.net 时间类 一周的周一和周末的日期
C# javaScript函数的相互调用
asp.net membership 密码重设
"虚拟路径"..."映射到另一个应用程序,这是不允许的!
如何传值在2个页面之间 要求不刷新父页面,并且不能用Querystring传值

ASP.NET 中的 .NET中防止Access数据库下载


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 210 ::
收藏到网摘: n/a

如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多。在这里只是探讨ASP.NET下防止Access数据库被下载的方法,有些是对以前方法的总结,部分是自己原创。其中可能有不完善甚至不正确的地方,欢迎大家指出,一同进步。

目前的解决方案主要有以下几种:

1. 把数据库文件放置到站点目录之外

2. 设置存放数据库文件的IIS目录权限为不可读取(IIS信息服务管理->选择需要设置目录->右键->属性->目录选项卡->取消读取复选框)

3. 采用ODBC数据源

以上三种方法都比较经典也比较安全,适合能对服务器直接操作的情况(因为三种方法都需要直接操作服务器进行设置),当然这也是ASP平台下防止Access被下载的解决方案。



ASP平台下还有一种解决办法,那就是在数据库中添加一个长二进制表,然后把文件后缀修改为.asp。(详情可参照动网论坛数据库的相应数据表)

4. 将你的 Access 重命名 *.asax:因为 ASP.NET 的处理机制中,默认情况下,对这样的请求是直接拒绝的,并不会有思归提到的解析过程耗费资源等问题。按照这个思路,其实还可以把 Access 重命名为 *.config,*.vb, *.cs 等等。

5. 将你的 Access 放在你的应用程序根下 bin 目录(也就是你放置 DLL 文件的那个目录)中:已经发现,IIS 默认被配置为拒绝直接访问 bin 目录中的文件,用以保护对 DLL 的请求,事实上也同时保护了放在 bin 目录中其他文件。但是对于这种方法,有人提出疑问: 会不会有这样的后果,数据库读写时会造成程序集被频繁的刷新,也会Session和Application不断丢失

6. (个人原创)另外一种方法是利用.NET的访问权限控制达到禁止匿名用户下载数据库的目的,具体如下:

打开配置文件Web.config,在configuration节点下添加如下一段配置:

<location path="DataBase">

<system.web>

<authorization>

<deny users="*" />

</authorization>

</system.web>

</location>

DataBase是你的数据库文件存放目录,如果是根目录则用<locateon path=”~/database.aspx”>替换即可。添加了上述配置后再把数据库后缀修改为.aspx等需要经过IIS解析的文件类型即可。

因为<deny users="*" />语句限制任何匿名用户访问路径path="DataBase"下的所有需要解析的文件。



注意:无论是ASP中还是.NET下,对于直接把Access数据库后缀直接改为.asp和.aspx,或者在文件名前面添加“#”或文件名中加入空格,用FlashGet照下不误。