Access安全性之QA詳解

2021-03-31 08:56:59 字數 3826 閱讀 7773

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 files/microsoft office/office/msaccess.exe /nostartup"

strrunshell = strrunshell & "/wrkgrp c:/newsystem.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早就該淘汰了!

如果你不相信我可以做乙個資料庫發給你,看你能不能開啟。我2023年開始使用access做開發,對我所完成的各種資料庫我都要反覆測試的,你所說的情況如果可以,我早就積攢幾十個別人開發我想破解掉的資料庫了。。。。

q 愚弟還是不明白:

小弟在文中所指的使用者是指內部操作人員,我也做過很多測試:

例:我建立乙個安全機制的資料庫,系統建立乙個mdw檔案,我設定乙個新的唯讀工作組及乙個普通使用者(無管理員權),把系統的使用者組不設任何許可權,然後退出access,選用新的mdw檔案,用那個普通使用者登入,建立乙個新的檔案,然後即可匯入、鏈結先前那個已有安全機制的資料庫.

a 你可能還是沒認真讀我的帖子,其實access的幫助中有更詳盡的說明,非常詳細。不過為了徹底讓你明白,我就列個傻瓜式的步驟吧,賢弟不要介意,我也是讀著傻瓜式的幫助才逐漸變聰明的。

1、先用access安裝目錄下的wrkgadm.exe程式建立乙個自己的mdw檔案。然後關聯上。

2、登陸進access後,預設是admin使用者,隨便建立mdb,修改admin使用者密碼,建立乙個新的帳號,比如pinewood,作為我今後管理變成用,再建立乙個newuser,給我以後的使用者用。(可以不建立任何組)

3、重新登陸,以pinewood登陸,然後修改密碼,即把空密碼修改掉。對newuser帳號也重複一次。

4、以pinewood登陸,建立你所需要開發的資料庫mdb原始檔,起名字比如mycode儲存後即可對安全性設定。安全性設定你應該知道在**吧,選單裡有。將所有admin以及guest對mycode的任何許可權都遮蔽掉,注意,任何許可權,不管是對新錶還是新模組,還是對資料庫的開啟許可權,全去掉。然後對所有組對本資料庫的全部許可權也全遮蔽掉。不能遺漏。如果使用者組不遮蔽掉其許可權,屬於這個組的admin以及guest都可以開啟資料庫了。

5、然後對pinewood對資料庫的許可權進行設定,當然,應該是所有許可權都有。對newuser許可權進行設定,當然對所有表、查詢等除了修改設計許可權,讀寫的許可權是應該有的,開啟資料庫的許可權也是應該有的,執行的許可權也應該有的。總之這個帳號是給使用者用的。

6、然後做開發,建立表窗體等。你已經做過了,那就匯入進來。但這時候你的資料庫是安全的,別人是無法從mycode中得到任何東西的。除非知道密碼。

7、開發完後應該是分離資料庫,不止到你是不是這樣做的,然後讓後台的mdb資料庫一樣的安全。然後編譯前台程式為mde檔案。

8、做個exe檔案,我在別的帖子裡說了,簡單的使用newuser帳號開啟資料庫的exe檔案。是給你的使用者用的,這樣他們除了使用這個exe使用資料庫,沒別的辦法。

9、然後把mdb放到伺服器端,mde和mdw以及exe發布給使用者使用。當然mde和mdb的關聯關係是事先建立並除錯好的。程式設計中如何處理就不用說了。

10、做到這裡就足夠了,對於非常需要安全的開發者來說本來是還有一些工作要做的。可參見我的別的帖子。「注意」裡說了一些。那些問題都是用到了自然會用,未用到的還是沒用。遇到哪個問題解決哪個,賢弟以為然否?

q 我的天?!!難道我要同時複製三個檔案,mdb & mdw & exe??? ...

先不說vb 的exe可以很方便的反編譯,難道別人就不會把mdw檔案先刪除,然後再開啟mdb檔案嗎?

如果說access的安全性僅限於此,那真的叫「徹底安全」了。

另外問一下,我需要更「安全」的方法有嗎?前兩次說的方法只要稍微懂一點電腦知識的人就可以解決了。

a 對於檔案共享方式,伺服器端只需要安裝mdb資料庫,客戶端需要安裝的是exe、mdw和mde檔案。

注意:

1、是mde檔案,而不是mdb,資料庫應該是放在後端的,而mde檔案是編譯過的,效率高,而且即使密碼被破解也不會洩露源**。

2、如果使用者刪除了mdw檔案,那麼就根本無法訪問資料庫了,如果不用我的mdw檔案就能訪問我的mdb檔案,那我談什麼安全。

3、exe檔案未必要用vb,vc、bc、delphi都可以,再說vb5以上的版本我還沒聽說可以反編譯的,也沒找到相應的工具。

4、目前破解access資料庫的使用者級安全密碼的工具也不少,但是對mdw檔案的使用者是可以處理的,可以使之即使破解了mdw檔案,也無法獲得使用mde源程式檔案mdb的許可權,更何況mde源程式檔案mdb他是根本無法得到的,因為根本就未發布。無處得到,除非你計算機讓人隨便用。所以程式是肯定安全的,資料庫的資料的安全性雖是相對安全的,但是也是足夠的。

Oracle安全性詳解

為了保證資料庫資料的安全可靠性和正確有效,dbms必須提供統一的資料保護功能。資料保 護也為資料控制,主要包括資料庫的安全性 完整性 併發控制和恢復。一 資料庫的安全性 資料庫的安全性是指保護資料庫以防止不合法的使用所造成的資料洩露 更改或破壞。計算 機系統都有這個問題,在資料庫系統中大量資料集中存...

PHP安全性漫談之PHP安全性設定

伺服器並不能阻止所有的安全問題,例如程式漏洞問題 使用者輸入表單問題 php檔案許可權問題等。也可以通過一些手段來迷惑黑客或者別有用心者。1 程式 漏洞問題 很多 php 程式所存在的重大弱點並不是 php 語言本身的問題,而是程式設計者的安全意識不高而導致的。因此,必須時時注意每一段 可能存在的問...

mysql安全性試驗 Mysql安全性測試

一 沒有進行預處理的sql語句 1.連線資料庫 conn mysql connect 127.0.0.1 3306 root 518666 if conn die could not connect mysql error 2.選擇資料庫 mysql select db mysql safe con...