近期在开发某公司的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);
基本就是这样吧。