近期在開(kāi)發(fā)某公司的OA系統(tǒng)的后臺(tái)時(shí)有一個(gè)關(guān)于ACCESS數(shù)據(jù)庫(kù)的問(wèn)題。 為了防止數(shù)據(jù)庫(kù)為不懷好意的人下載,需要更改數(shù)據(jù)庫(kù)的后綴名為ASPX(ASP等其它也可以),而公司內(nèi)部人員又需要通過(guò)IE來(lái)下載數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。 當(dāng)然,通過(guò)修改文件名后綴的方法來(lái)
近期在開(kāi)發(fā)某公司的OA系統(tǒng)的后臺(tái)時(shí)有一個(gè)關(guān)于ACCESS數(shù)據(jù)庫(kù)的問(wèn)題。
為了防止數(shù)據(jù)庫(kù)為不懷好意的人下載,需要更改數(shù)據(jù)庫(kù)的后綴名為ASPX(ASP等其它也可以),而公司內(nèi)部人員又需要通過(guò)IE來(lái)下載數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。
當(dāng)然,通過(guò)修改文件名后綴的方法來(lái)隱藏?cái)?shù)據(jù)庫(kù)并不是有個(gè)特別安全的方法,畢竟以M為單位的數(shù)據(jù)庫(kù)和以K為單位的ASPX頁(yè)面相比,一眼都能看出這到底是數(shù)據(jù)庫(kù)還是WEB頁(yè)。不過(guò),算是一個(gè)簡(jiǎn)單易行的方法吧。
首先,純粹簡(jiǎn)單地修改數(shù)據(jù)庫(kù)文件后綴名為ASPX并不能完全保證不會(huì)被下載,你下載這個(gè)ASPX頁(yè)面再修改回后綴名就可以還原數(shù)據(jù)庫(kù)。(前面說(shuō)了,是可以很明顯的看出哪些頁(yè)面是由數(shù)據(jù)庫(kù)假裝的)
這里需要對(duì)這個(gè)修改后的文件做些手腳,加上<%%>,就可以讓IIS把它當(dāng)ASPX頁(yè)處理,從而返回一個(gè)錯(cuò)誤,而不是下載。并不能簡(jiǎn)單添加,需要先建立一個(gè)包含<%%>的文本文件,然后在原數(shù)據(jù)庫(kù)中加一張表,加一個(gè)OLE對(duì)象的字段,然后加一條記錄,OLE對(duì)象字段的內(nèi)容指向前面建立的文本。
然后是關(guān)于自己內(nèi)部的人員如何來(lái)正常下載數(shù)據(jù)庫(kù)。通過(guò).NET的HttpResponse對(duì)象向客戶端輸入數(shù)據(jù)庫(kù)文件來(lái)實(shí)現(xiàn)下載。
修改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);
基本就是這樣吧~
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com