日期:2013-09-17  浏览次数:20802 次


近期在开发某公司的OA系统的后台时有一个关于ACCESS数据库的问题。
为了防止数据库为不怀好意的人下载,需求更改数据库的后缀名为ASPX(ASP等其它也可以),而公司内部人员又需求通过IE来下载数据库实现对数据库进行备份。

当然,通过修正文件名后缀的方法来隐藏数据库并不是有个特别安全的方法,毕竟以M为单位的数据库和以K为单位的ASPX页面相比,一眼都能看出这到底是数据库还是WEB页。不过,算是一个简单易行的方法吧。

首先,纯粹简单地修正数据库文件后缀名为ASPX并不能完全保证不会被下载,你下载这个ASPX页面再修正回后缀名就可以还原数据库。(前面说了,是可以很明显的看出哪些页面是由数据库假装的)
这里需求对这个修正后的文件做些手脚,加上<%%>,就可以让IIS把它当ASPX页处理,从而前往一个错误,而不是下载。并不能简单添加,需求先建立一个包含<%%>的文本文件,然后在原数据库中加一张表,加一个OLE对象的字段,然后加一条记录,OLE对象字段的内容指向前面建立的文本。

然后是关于本人内部的人员如何来正常下载数据库。通过.NET的HttpResponse对象向客户端输入数据库文件来实现下载。
                修正HTTP头:
                                        HttpContext.Current.Response.AppendHeader("Content-disposition","attachment;filename=backup.mdb");
HttpContext.Current.Response.ContentType ="application/ms-access";

                向客户端输入文件:
                                                long FileSize = new FileInfo(DbPath).Length;
 
                                                Response.WriteFile(DbPath , 0 , FileSize);
                
基本就是这样吧~