ASP.NET中防止Access数据库下载
如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多。这里我们给出几种在ASP.NET下防止Access数据库被下载的方法。
我们这里假设Access数据库名字为 test.mdb。
1、把数据库放在WEB目录外
如你的网站目录是D:\www,你可以把数据库放到D:\data 这个文件夹里,然后修改网站程序中的数据库连接字串地址部分为:"D:\data\test.mdb" ,这样数据库可以正常调用,但是无法下载的,因为它不在网站目录里。
假设在web.config中配置数据库连接字符串。例如:
<connectionStrings>
<add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source=d:\data\test.mdb" providerName="System.Data.OleDb" />
</connectionStrings>
2、把数据库放在App_Data系统文件夹下
从.Net2.0开始有App_Data目录来专门存放数据文件,它可以用来放Access,SQL Server Express、XML等数据文件。数据库文件放到App_Data文件夹的好处就是可以防止被下载。而对于连接字符串数据库的文件位置可以使用DataDirectory关键来表示它的物理路径,从而在获取连接字符串的时候不再需要使用Server.MapPath()转换。
假设在web.config中配置数据库连接字符串。例如:
<connectionStrings>
<add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source=|DataDirectory|test.mdb" providerName="System.Data.OleDb" />
</connectionStrings>
|DataDirectory|就是代表的app_data文件夹。
3、重命名数据库文件
将你的 Access 重命名 *.asax:因为 ASP.NET 的处理机制中,默认情况下,对这样的请求是直接拒绝的。按照这个思路,还可以把 Access 重命名为 *.config,*.vb, *.cs 等等。
4、配置IIS,添加.mdb文件类型映射
添加.mdb的扩展映射这个方法就是通过修改IIS设置来实现。只需2个步骤。
1. 配置IIS,将.mdb文件类型映射到ASP.NET ISAPI。
以windows 2003为例,点击“开始”-》运行-》输入“inetmgr” 回车,打开“Internet 服务管理器”。在某一个网站上单击鼠标右键-》点击“属性” 弹出此站点的属性对话框。点击“主目录”选项卡,点击“配置”按钮,则会显示“应用程序配置”对话框。点击“添加”增加一个映射,这时会显示一个对话框,要你输入可执行文件:“C:\WINDOWS \Microsoft.NET \Framework \v2.0.50727 \aspnet_isapi.dll”;输入扩展名:“.mdb”。如下图所示
2. 配置asp.net的web.config文件,将.mdb文件类型映射到HttpForbiddenHandler HTTP handler。
使asp.net应用程序.mdb文件类型映射到HttpForbiddenHandler HTTP 句柄。为了达到这上步,必须将下面的配置加到Web.config文件中
<httpHandlers>
<add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>
5、添加ACCESS防下载字段
该方法的原理是:将数据库的扩展名变成.aspx格式,从远程访问这个文件的时候,IIS服务器就会把它当成aspx程序来执行,而我们之前在ACCESS数据库中插入了“<%”符号,而asp.net程序必须在“<%%>”标记中才能执行,所以就会出现 “缺少脚本关闭标记” 的500错误,别人就无法下载ACCESS数据库了。如果只是简单的在数据库的文本或者备注字段加入“<%”是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以 <% 的形式存在,无效!正确的方法是将 <% 存入OLE对象字段里。方法如下:
1、先创建一个表,在SQL命令窗口内输入如下内容:“create table [notdown]([notdown] oleobject)”
然后点击工具栏中的“!”(运行),这样,就会在当前数据库内创建一个“notdown”表,其中的字段名称为“notdown”,字段类型为“OLE对象”。 如图1
(图1)
2、将SQL查询窗口中的内容更改为如下命令:“insert into [notdown](notdown) values (0x3C25)”
这一句的意思是向“notdown”表的“notdown”字段中插入“0x3C25”数据(“0x3C25”为字符“<%”的16进制)。如图2
(图2)
执行完毕后,再次查看数据库中的“表”,就会发现其中已多了一个“notdown”表,打开后字段显示的是“长二进制数据” 如图3
(图3)
admin10000.com 这里已经做好的防下载数据表notdown,你可以直接下载粘贴到自己数据库中使用。
notdown数据表
提示1:无论是ASP网站中还是ASP.NET网站,对于直接把Access数据库后缀直接改为.asp和.aspx,用FlashGet等下载工具都照下不误,不能起到防下载作用。
提示2:第5种方法通常用在ASP+ACCESS网站中。
ASP.NET中防止Access数据库下载的更多相关文章
- 如何在Asp.net中备份Access数据库?
public void Create( string mdbPath ) { if( File.Exists(mdbPath) ) //检查数据库是否已存在 { thr ...
- 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据
开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...
- 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET
今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...
- Java Web项目中连接Access数据库的配置方法
本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...
- 具体解释VB中连接access数据库的几种方法
在VB中,连接ACCESS数据库的方法主要有以下三种 使用ADO对象,通过编写代码訪问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件高速创建数据库连接 有三种连接方法 ...
- 关于Asp.Net中的编程实现下载
经常在论坛看见有人求Asp.Net中编程实现下载的代码,有些还希望能断点续传什么的.其实问题的关键在于权限.B/S和C/S不仅仅是外观上的区别而已. 下载,顾名思义是客户端要下,所以载.你硬塞給人家那 ...
- 64位系统中连接Access数据库文件的一个问题
近日在windows 7 64位系统中编译以前写的程序,发现在连接Access数据库时总是出现异常,提示“Microsoft.Jet.OLEDB.4.0”未在本机注册,同样的代码在32位的xp系统中却 ...
- ASP.NET中操作SQL数据库
在WebConfig中配置数据库连接字符串,代码如下: <connectionStrings> <add name="ConnectionString&qu ...
- ACCESS-关于DELPHI中操作ACCESS数据库中单精度数据的问题
在近日几个帖子里面,和QQ群的讨论里面,我发现很多网友都遇到的问题都是因为不恰当地使用了单精度/双精度数值.因此想专门就这个话题谈一下. 单精度和双精度数值类型最早出现在C语言中(比较通用的语言里面) ...
随机推荐
- NULL指针引起的一个linux内核漏洞
NULL指针一般都是应用于有效性检测的,其实这里面有一个约定俗成的规则,就是说无效指针并不一定是 NULL,只是为了简单起见,规则约定只要指针无效了就将之设置为NULL,结果就是NULL这个指针被用来 ...
- jQuery之层次选择器
层次选择器: 查找子元素, 后代元素, 兄弟元素的选择器1. ancestor descendant 在给定的祖先元素下匹配所有的后代元素2. parent>child 在给定的父元素下匹配所有 ...
- 第七次JAVA语言笔记
- paoding-rose 之 maven配置
<dependency> <!-- junit 4.7 --> <groupId>junit</groupId> <artifactId>j ...
- bzoj2386 [CEOI2011] Team
题意 给你n个数,每个数的大小在1到n之间,要求把它们分成几组,每个数字的大小要小于等于它所在组中的数字总个数,问最多能分出多少组. 分析 首先把所有数字排序,比较显然的是最后一定存在一个最优解是按这 ...
- 【bzoj5178】[Jsoi2011]棒棒糖 主席树
题目描述 Coffee的世界里也是有棒棒糖卖的,Coffee买了N(1≤N≤50000)只连着的.这N只棒棒糖包裹在小塑料袋中,排成一列,相邻的两只棒棒糖的塑料袋是接起来的.为了方便,我们把棒棒糖从左 ...
- git commad
repo forall -c 'echo $REPO_PATH;ssh trd.git.htc.com -p29419 -lowen_wen gerrit create-project --submi ...
- wp开发(一)--应用发布篇
本文非常简单,适合刚刚刚刚入门的菜鸟,且针对的是wp8版本.wp8应用的发布总体来说没什么难度,只是有几个值得注意的地方,希望本文可以减少菜鸟们不必要的担心. 首先假设项目已经完成,且要发布到应用商城 ...
- 【BZOJ3566】概率充电器(动态规划)
[BZOJ3566]概率充电器(动态规划) 题面 BZOJ Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工 ...
- 【CF813E】Army Creation(主席树)
[CF813E]Army Creation(主席树) 题面 CF 洛谷 翻译 by ppl 见洛谷 题解 考虑最多只会有\(K\)个相同的数 那么,也就是说,如果一个数会被选 那么,和它相等的数中,在 ...