在寫這篇文章前首先要感謝網(wǎng)友:松木、zengwb、秋天、4432,謝謝他們圍繞Access安全性的討論,現(xiàn)摘錄如下:
Q MDB我用[啟動]的所有選項都 False,用封面表單啟動,同個工作組的用戶沒授權(quán)是不能開打表修改,但他可以另建一個空數(shù)據(jù)庫,進行導(dǎo)入或鏈接進行修改,如何防范?請賜教!
A 首先應(yīng)該用MS Access Workgroup Administrator程序建立自己的MDW文件,比如newSystem.mdw,然后建立一個新的帳號比如newAdmin,缺省的有AMDIN和,比如GUEST帳號,然后設(shè)置各個帳號的密碼。然后以newAdmin帳號登陸,建立數(shù)據(jù)庫,或者導(dǎo)入現(xiàn)有的數(shù)據(jù)庫中的表或窗體等進行開發(fā)。對數(shù)據(jù)庫的安全性進行設(shè)置。除了newadmin帳號,將所有的組和用戶對該數(shù)據(jù)庫的打開權(quán)限都屏蔽掉,其它權(quán)限也宜屏蔽掉。這樣的話安全了。這樣的話打開該數(shù)據(jù)庫只能關(guān)聯(lián)上新建的MDW文件,使用newAdmin帳號才能打開。但是實際應(yīng)用時當(dāng)然還應(yīng)該建立一個運行軟件的帳號,比如newUser,(最好不要用缺省的“用戶”帳號,這樣關(guān)聯(lián)到SYSTEM。MDW上就可以進入,即使你設(shè)置密碼也不安全,因為COPY一個新的SYSTEM。MDW一樣可以關(guān)聯(lián)。)將newUser帳號對各個表的權(quán)限相應(yīng)的設(shè)置,能讀寫,不能修改設(shè)計,對窗體只能運行即可,總之它是用來運行的。屏蔽一切可以修改的權(quán)限。這樣的話開發(fā)和運行就是兩個帳號,但是新的問題就是如果就這樣交給用戶使用,那么用戶就必須知道newUser帳號的密碼,那樣的話數(shù)據(jù)就又不安全了,所以還應(yīng)該用VB或者DELPHI做個套子,最簡單的寫上一句,運行該數(shù)據(jù)庫就行了,比如:strRunShell = "c:Program FilesMicrosoft OfficeOfficeMSACCESS.EXE /nostartup"
strRunShell = strRunShell & "/wrkgrp c: ewSystem.mdw c:pinewood.mde /user newUser /PWD yourpassword"
RetVal = Shell(strRunShell, vbMaximizedFocus)
當(dāng)然這只是個意思,在這套子里寫寫別的也可以,比如檢查ACCESS是否安裝了,路徑是不是對,是不是注冊了等等。(附:用另外一個已經(jīng)編譯成MDE文件的數(shù)據(jù)庫也可以達到如上效果)
Q 用戶安全組我也用過,但是我指的安全性主要針對內(nèi)部人員,外面的高手如林,根本不要談安全性了。
ACCESS有個致命的毛病(或許我還不會用),它的安全性性能只能用在當(dāng)前已設(shè)安全機制的數(shù)據(jù)庫,對用戶新建的數(shù)據(jù)庫根本無用,用戶只需用他的帳戶登錄ACCESS,新建一個*.MDB,再用鏈接功能即可把后端數(shù)據(jù)庫的表都鏈接起來(或者前端數(shù)據(jù)庫也可,因為前端數(shù)據(jù)庫的表是鏈接再后端數(shù)據(jù)庫的表上,他無非是再鏈接而已),他只要看懂表的內(nèi)容,就可以任意修改了。
其實微軟稍改ACCESS讓它的安全機制適用所有的數(shù)據(jù)庫而不是當(dāng)前數(shù)據(jù)庫,我們就不用傷腦筋去防范一些初哥兒們,作為我們使用安全機制無非也就防范這些內(nèi)部使用者的非法修改、破壞而已。
所以我們需要ACCESS系統(tǒng)級安全機制或office developer edition也有一定的幫助
A 錯錯錯,“用戶只需用他的帳戶登錄ACCESS,新建一個*.MDB,再用鏈接功能即可把后端數(shù)據(jù)庫的表都鏈接起來(或者前端數(shù)據(jù)庫也可,因為前端數(shù)據(jù)庫的表是鏈接再后端數(shù)據(jù)庫的表上,他無非是再鏈接而已),他只要看懂表的內(nèi)容,就可以任意修改了。”
這段話錯!如果ACCESS的安全性真的象賢弟所說的,那我所貼的那些可能都是空談了。你可能還是沒有按照我說貼的實踐一番。事實上是不會那樣的,因為我是新創(chuàng)建的系統(tǒng)文件(即MDW文件),關(guān)聯(lián)到新的系統(tǒng)文件創(chuàng)建數(shù)據(jù)庫,而此數(shù)據(jù)庫的打開權(quán)限只能由我指定的固定的用戶比如NEWUSER才有,所以別人,不管關(guān)聯(lián)到什么系統(tǒng)文件上都是無法用新建的數(shù)據(jù)庫聯(lián)結(jié)上的,如果真是那樣,ACCESS早就該淘汰了!
如果你不相信我可以做一個數(shù)據(jù)庫發(fā)給你,看你能不能打開。我1997年開始使用ACCESS做開發(fā),對我所完成的各種數(shù)據(jù)庫我都要反復(fù)測試的,你所說的情況如果可以,我早就積攢幾十個別人開發(fā)我想破解掉的數(shù)據(jù)庫了。。。。
Q 愚弟還是不明白:
小弟在文中所指的用戶是指內(nèi)部操作人員,我也做過很多測試:
例:我建立一個安全機制的數(shù)據(jù)庫,系統(tǒng)創(chuàng)建一個MDW文件,我設(shè)定一個新的只讀工作組及一個普通用戶(無管理員權(quán)),把系統(tǒng)的用戶組不設(shè)任何權(quán)限,然后退出ACCESS,選用新的MDW文件,用那個普通用戶登錄,建立一個新的文件,然后即可導(dǎo)入、鏈接先前那個已有安全機制的數(shù)據(jù)庫.
A 你可能還是沒認真讀我的帖子,其實ACCESS的幫助中有更詳盡的說明,非常詳細。不過為了徹底讓你明白,我就列個傻瓜式的步驟吧,賢弟不要介意,我也是讀著傻瓜式的幫助才逐漸變聰明的。
1、先用ACCESS安裝目錄下的WRKGADM.EXE程序創(chuàng)建一個自己的MDW文件。然后關(guān)聯(lián)上。
2、登陸進ACCESS后,缺省是ADMIN用戶,隨便建立MDB,修改ADMIN用戶密碼,建立一個新的帳號,比如PINEWOOD,作為我今后管理變成用,再建立一個NEWUSER,給我以后的用戶用。(可以不建立任何組)
3、重新登陸,以PINEWOOD登陸,然后修改密碼,即把空密碼修改掉。對NEWUSER帳號也重復(fù)一次。
4、以PINEWOOD登陸,建立你所需要開發(fā)的數(shù)據(jù)庫MDB源文件,起名字比如MYCODE保存后即可對安全性設(shè)置。安全性設(shè)置你應(yīng)該知道在哪里吧,菜單里有。將所有ADMIN以及GUEST對MYCODE的任何權(quán)限都屏蔽掉,注意,任何權(quán)限,不管是對新表還是新模塊,還是對數(shù)據(jù)庫的打開權(quán)限,全去掉。然后對所有組對本數(shù)據(jù)庫的全部權(quán)限也全屏蔽掉。不能遺漏。如果用戶組不屏蔽掉其權(quán)限,屬于這個組的ADMIN以及GUEST都可以打開數(shù)據(jù)庫了。
5、然后對PINEWOOD對數(shù)據(jù)庫的權(quán)限進行設(shè)置,當(dāng)然,應(yīng)該是所有權(quán)限都有。對NEWUSER權(quán)限進行設(shè)置,當(dāng)然對所有表、查詢等除了修改設(shè)計權(quán)限,讀寫的權(quán)限是應(yīng)該有的,打開數(shù)據(jù)庫的權(quán)限也是應(yīng)該有的,運行的權(quán)限也應(yīng)該有的。總之這個帳號是給用戶用的。
6、然后做開發(fā),建立表窗體等。你已經(jīng)做過了,那就導(dǎo)入進來。但這時候你的數(shù)據(jù)庫是安全的,別人是無法從MYCODE中得到任何東西的。除非知道密碼。
7、開發(fā)完后應(yīng)該是分離數(shù)據(jù)庫,不止到你是不是這樣做的,然后讓后臺的MDB數(shù)據(jù)庫一樣的安全。然后編譯前臺程序為MDE文件。 本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|