近期在開發某公司的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);
基本就是這樣吧~