2015-07-10 65 views
0

我已經爲某些公司構建了工資系統,並且工作正常。問題是我對數據庫沒有太多的知識。我分別準備了員工表和員工登錄表。這兩個表都有employeeID,用戶名,電子郵件列。只有登錄表有密碼字段。我這樣做是因爲我的一位朋友說這是做這件事的正確方法。但我現在有我的疑慮。所以請幫助我瞭解哪種方式是存儲密碼的正確方式。需要單獨的員工表和員工登錄表

是否需要單獨的表或者我們可以將密碼存儲在主員表中?

+0

爲什麼在工資系統中需要密碼?密碼應該安全地保存在你的LDAP目錄中。 –

+0

您應該嘗試瞭解'數據庫標準化',並對其進行基本掌握。 – mane

+0

@seva titov使用這個系統的員工可以查看他們的出勤率,獎金他們已經得到和幾乎沒有信息 –

回答

0

只要你已經完成標準化,兩張表格都是合理的。登錄表需要一個用戶ID(據推測是僱員ID)和(鹽漬和散列)密碼,以及你在密碼時使用的隨機鹽 - 但可能不是用戶名,絕對不是電子郵件欄。您可能需要添加列以記錄密碼上次更改時的時間以及下次更改密碼的時間以及密碼何時到期。

另一張桌子很好。將兩個表合併成一個表不會出現問題。將用戶名與密碼在同一個表中可能是明智的,在這種情況下,員工表將失去用戶名列。你想要避免重複 - 如果你有兩個表中的用戶名,你可以打開員工ID爲100的僱員表中的用戶名'poweruser'和員工登錄表中的用戶名'intern' - 這不太可能是可取的。

將它們分開的一個優點是,您可以對密碼錶進行更嚴格的權限設置,以便大多數用戶甚至無法讀取密碼錶。您使用特殊軟件來控制對其的訪問並更新密碼。

請注意,您不存在存儲原始密碼的風險。你必須對它進行散列(最好是多次),並且你必須用一個隨機鹽散列它(它應該是唯一的,至少是64位)。在SO(或Information Security)上尋找關於密碼散列的問題。

+0

真的非常感謝您的長時間解釋。它幫助了很多。我應該儘快瞭解更多關於db的知識。再次感謝:D –