在寫這篇文章前首先要感謝網友:松木、zengwb、秋天、4432,謝謝他們圍繞Access安全性的討論,現摘錄如下:
Q MDB我用[啟動]的所有選項都 False,用封面表單啟動,同個工作組的用戶沒授權是不能開打表修改,但他可以另建一個空數據庫,進行導入或鏈接進行修改,如何防范?請賜教!
A 首先應該用MS Access Workgroup Administrator程序建立自己的MDW文件,比如newSystem.mdw,然後建立一個新的帳號比如newAdmin,缺省的有AMDIN和,比如GUEST帳號,然後設置各個帳號的密碼。然後以newAdmin帳號登陸,建立數據庫,或者導入現有的數據庫中的表或窗體等進行開發。對數據庫的安全性進行設置。除了newadmin帳號,將所有的組和用戶對該數據庫的打開權限都屏蔽掉,其它權限也宜屏蔽掉。這樣的話安全了。這樣的話打開該數據庫只能關聯上新建的MDW文件,使用newAdmin帳號才能打開。但是實際應用時當然還應該建立一個運行軟件的帳號,比如newUser,(最好不要用缺省的“用戶”帳號,這樣關聯到SYSTEM。MDW上就可以進入,即使你設置密碼也不安全,因為COPY一個新的SYSTEM。MDW一樣可以關聯。)將newUser帳號對各個表的權限相應的設置,能讀寫,不能修改設計,對窗體只能運行即可,總之它是用來運行的。屏蔽一切可以修改的權限。這樣的話開發和運行就是兩個帳號,但是新的問題就是如果就這樣交給用戶使用,那麼用戶就必須知道newUser帳號的密碼,那樣的話數據就又不安全了,所以還應該用VB或者DELPHI做個套子,最簡單的寫上一句,運行該數據庫就行了,比如:strRunShell = "c:Program FilesMicrosoft OfficeOfficeMSACCESS.EXE /nostartup"
strRunShell = strRunShell & "/wrkgrp c:
ewSystem.mdw c:pinewood.mde /user newUser /PWD yourpassword"
RetVal = Shell(strRunShell, vbMaximizedFocus)
當然這只是個意思,在這套子裡寫寫別的也可以,比如檢查ACCESS是否安裝了,路徑是不是對,是不是注冊了等等。(附:用另外一個已經編譯成MDE文件的數據庫也可以達到如上效果)
Q 用戶安全組我也用過,但是我指的安全性主要針對內部人員,外面的高手如林,根本不要談安全性了。
ACCESS有個致命的毛病(或許我還不會用),它的安全性性能只能用在當前已設安全機制的數據庫,對用戶新建的數據庫根本無用,用戶只需用他的帳戶登錄ACCESS,新建一個*.MDB,再用鏈接功能即可把後端數據庫的表都鏈接起來(或者前端數據庫也可,因為前端數據庫的表是鏈接再後端數據庫的表上,他無非是再鏈接而已),他只要看懂表的內容,就可以任意修改了。
其實微軟稍改ACCESS讓它的安全機制適用所有的數據庫而不是當前數據庫,我們就不用傷腦筋去防范一些初哥兒們,作為我們使用安全機制無非也就防范這些內部使用者的非法修改、破壞而已。
所以我們需要ACCESS系統級安全機制或office developer edition也有一定的幫助
A 錯錯錯,“用戶只需用他的帳戶登錄ACCESS,新建一個*.MDB,再用鏈接功能即可把後端數據庫的表都鏈接起來(或者前端數據庫也可,因為前端數據庫的表是鏈接再後端數據庫的表上,他無非是再鏈接而已),他只要看懂表的內容,就可以任意修改了。”
這段話錯!如果ACCESS的安全性真的象賢弟所說的,那我所貼的那些可能都是空談了。你可能還是沒有按照我說貼的實踐一番。事實上是不會那樣的,因為我是新創建的系統文件(即MDW文件),關聯到新的系統文件創建數據庫,而此數據庫的打開權限只能由我指定的固定的用戶比如NEWUSER才有,所以別人,不管關聯到什麼系統文件上都是無法用新建的數據庫聯結上的,如果真是那樣,ACCESS早就該淘汰了!
如果你不相信我可以做一個數據庫發給你,看你能不能打開。我1997年開始使用ACCESS做開發,對我所完成的各種數據庫我都要反復測試的,你所說的情況如果可以,我早就積攢幾十個別人開發我想破解掉的數據庫了。。。。