請教身份權限管理表格要如何設計 |
答題得分者是:boson
|
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
請教各位前輩:
小妹在試者自己寫一些小系統管自己的一些小東西,想為這個系統加個身份權限管制。我不曉得這個含密碼值及權限設定的表格要如何設計。我會將密碼值編碼加密後再存入表中。我要如何設計這個系統有那些權限?是作個Form的清單,再在身份權限主表的從表中記錄此人可否執行此Form的新增修改刪除的權限嗎?這樣作好像好奇怪?而且覺得好像很容易被人破解及毀壞。在這個記錄帳號、Form、add/Edit/Delete/Execute的Detail表格中勢必會變成一人N筆資料,這寫起來要如何寫?而且這些是否可以Add或Edit等的欄位是用True/False來記錄嗎?如是True/False那會好奇怪,而且要如何編密?如設成Char的是或否,那這麼短的字串又頻繁出現的字串編密後很容易被破解,即使不被破解,有心人只要開了這個Access再以覆製貼上就可任意改變此人某Form是否可執行某功能的設定了。我想了好久,覺得都不可行,不知前輩們是如何設計及處理這些問題的。謝謝指點。 |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
因為Form會有很多個,如果不設成『user-主/Form權限記錄多筆-從』的方式,要如何作?小妹實在想不出來。我只是寫來好玩,沒設計過商務系統的經驗,這方面真沒什麼底子。想了好久好久,沒有頭緒,才鼓起勇氣來問問。
我是看過一本講到權限設定與管理的書,想來自己寫一個類似功能。想了好久,問題很多。 如果我的Form權限包括AccountName/FormName/CanAdd/CanEdit/CanExec,那User只要比對一下他自己的身份及權限,就可以開了Access用簡單的拷貝貼上﹝如果我將『是/否』編碼﹞﹝這麼短的字講到編碼保護,好像沒什麼用﹞就可以完全破解了。 不用主從多表要如何設計?百思不得其解。 |
JammyHsu
一般會員 發表:14 回覆:39 積分:10 註冊:2003-09-08 發送簡訊給我 |
table struct list
name(10) password(10) rights(10) jack ****** ###### mary ******** $$$$$$$ 用代號代表每一項功能, 譬如: 0: 表示執行 1: 新增 2: 修改 3: 刪除 4: 列印 ...(至少可以設到62種0-9, A-Z, a-z) 若jack可執行 新增 修改 列印, 那他的權限就是0124 若mary可執行 刪除 列印, 那他的權限就是034 以上代號存入table時再編碼就好啦, 不用一種權限建一個欄位 然後可以在執行程式時就判斷有哪些權限, 沒有的權限就把它disable 或者mary點add時, 再判斷有無權限, 沒有就顯示提示 不需用到兩個表格, 也沒什麼主從式的問題了 |
boson
中階會員 發表:74 回覆:155 積分:85 註冊:2004-07-31 發送簡訊給我 |
員工資料表 :
UserID UserName Password 權限資料表 UserID FormName Rights 1. 假設有 N 個 Form, 則每一位 User 在權限資料表中就會有 N 筆資料 2. Password 僅儲存密碼的 MD5 雜湊值, 我想這你應該知道 3. Rights 可如同上文提到的方法, 儲存權限值, 但需以 AES 編碼保護 例如, 假設某一個 Form 可讓此 User 進行 瀏覽與修改, 則 Rights 原始值可設為 'BE' (Browse, Edit), 但存入資料表時, 應將 'BE' 以某一個 Key 進行 AES 運算, 而 Key 又應與 UserID 及 FormName 相關, 簡單的做法, 可以用一個固定字串(如 'MyAesKey') 加上 UserID, 再加上 FormName 做為 Key, 例如 UserID 是 'A01', 而 FormName 是 'Form1', 則 Key 可以用 'MyAesKeyA01Form1' 字串, 這樣將 'BE' 與 'MyAesKeyA01Form1' 進行 AES 編碼得到的結果, 才實際存入資料表的 Rights 欄位 4. 要查核 User 權限時, 將 'MyAesKey' 加上 UserID 與 FormName 而得到 Key, 使用 Key 將 Rights 解碼, 即得真正的權限值, 如果 AES 解碼時, 出現錯誤, 表示有人動了手腳, 那就不允許進行任何動作 這樣的做法, 每個 Key 都不同, 只要試圖搞鬼的人不知道你的 Key 值是這樣來的, 就無法修改權限值, 基本上這個系統就算比較安全了 (Password 進行 MD5 運算時, 也應該以類似的方式加上一個固定字串, 以免被解碼 例如, 密碼是 '123', 則以 'MyHashKey123' 進行 MD5 運算, 得到的結果才存入 Password 欄位) 當然, 有法有破, 真要遇到高手, 可能還是可以從其他地方破解, 不過這又是另外一件事了 |
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
|
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
|
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
MD5跟AES問Google,連Source都有,
有沒有跨Form不重要,重要的是「被管理的物件」,在「被使用之前」,「必須取得授權」 既然你的管理資料都在DB中,那麼你就需要有一個授權的機制, 在每次物件或資源被使用前都去檢查現有帳號是否有權限使用 可以參考Windows的系統管理。
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |