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

access|asp.net|数据|数据库|下载

  如何防止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照下不误。

时间: 2025-01-07 17:41:04

ASP.NET中防止Access数据库下载的相关文章

.NET中防止Access数据库下载_实用技巧

如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多.在这里只是探讨ASP.NET下防止Access数据库被下载的方法,有些是对以前方法的总结,部分是自己原创.其中可能有不完善甚至不正确的地方,欢迎大家指出,一同进步.          目前的解决方案主要有以下几种: 1.       把数据库文件放置到站点目录之外 2.       设置存放数据库文件的IIS目录权限为不可读取(IIS信息服务管理->选择需要设置目录->右键->属性->目录选项卡->取消读取

执行一个asp文件完成防止Access数据库下载

access|数据|数据库|下载|执行 思路是来自:<%的使用,然后Asp执行的时候报错. 现在只是把他写成asp代码了,方便使用. 因为这样话可以直接执行就ok了,也不用下载数据库然后建表等....然后再上传覆盖了... 偶的代码只是为了实现这个功能:讲究实用.请各位多多指点.... 顺便补充一下这代码产生的背景:我也是提议mdb映射的比较好,也作了录象了,后来他硬要问:在没有做隐射的虚拟主机上怎么办,所以就匆忙写了这么段代码免去他下载然后手工插入<%然后上传的麻烦. 1.加了详细的错误描述

在ASP程序中访问Access数据库

access|程序|访问|数据|数据库          在基于微软IIS/PWS的网络平台上,通过服务器端运行的ASP程序来访问后台数据库,是一种最常见的模式了.而对于小型的数据库应用需求,微软的Access数据库,应该是与ASP程序配套使用的首选.由于Access数据库的ODBC驱动程序支持的SQL指令全,执行效率高,所以Access后台数据库+ASP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式.         在这种使用模式中,ASP程序无疑是最重要的,是沟通客户端和后台

ASP.NET中通过对话框方式下载文件

ASP.NET中通过对话框方式下载文件 1 通过探出对话框提示文件下载或打开 2 通过自定义Header让特定的应用程序打开文件  使用的方法:Response.TransmitFile()  例程: Response.ContentType = "image/jpeg";Response.AppendHeader("Content-Disposition","attachment; filename=SailBig.jpg");Response

ASP.NET[C#]的ACCESS数据库操作类

access|asp.net|数据|数据库 ASP.NET[C#]的ACCESS数据库操作类       //网上很多都是操作SQL SER 的,整理了一下,不是很完善,但不影响使用,呵呵--       //private string datapatch = ConfigurationSettings.AppSettings["acessconn"];//数据库地址                                            private string

在CB中使用ACCESS数据库

Access数据库在管理中得到了广泛的应用,在长期的使用中已有很多数据资料存储在Access数据库的文件中,用C++ Builder编程时,往往也需要使用Access数据库,来实现数据的传递. 在C++ Builder中使用Access数据库既可以在设计期实现,也可以在运行期通过编程实现.下面就以一个简单的例子,来说明在C++ Builder中如何使用Access数据库. 在设计期使用Access数据库 首先新建一个工程,保存单元文件为Unit1.cpp,保存工程文件为Project1.bpr.

用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了

问题描述 用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了 ACCESS数据库表中列的顺序是1左,2左,11左,12左,1右,2右,11右,12右,但是当显示在datagridview中时就呈现上面的乱码, 解决方案 这是一个bug 试试看:http://blog.csdn.net/lukesunch/article/details/4644101 再不行就不要绑定,手工循环添加.

access数据库-C#中连接ACCESS数据库中某一列,在combobox列表中表示所有行,代码该如何写

问题描述 C#中连接ACCESS数据库中某一列,在combobox列表中表示所有行,代码该如何写 求助:C#中连接ACCESS数据库中某一列,在combobox列表中表示所有行,代码该如何写 解决方案 从列转到数组,再用数组绑定控件. .DataSource = 读取条件设定.Tables["五行农历显示"].AsEnumerable().Select(d => d.Field("日期")).ToArray();/*表中某列转数组*/ 解决方案二: 初学者,意

asp.net 中 如何将数据库中某一个字段的值显示在8行8列的表格中,点击某个表格的值时还能编辑

问题描述 asp.net 中 如何将数据库中某一个字段的值显示在8行8列的表格中,点击某个表格的值时还能编辑 asp.net 中 如何将数据库中某一个字段的值显示在8行8列的表格中,点击某个表格的值时还能编辑 解决方案 你是要某个字段显示在8行8列的表格中还是说读取数据出来之后是个8行8列的表格,然后显示进去? 可以直接用GRIDVIEW,或者直接用html拼接,至于修改,gridview有自带的commond方法 解决方案二: 数据库有64条记录,把64个记录中的score字段的值全部显示在表