不要真的去撈出密碼值來與使用者輸入的密碼比對, 因為這樣你必須將密碼值以明碼方式存放在資料庫(或某檔案或Registry)裡, 你會冒了一個所有使用者代號與密碼洩漏的風險. 當然你可以將密碼欄位加密起來, 但有更簡單的方式…. 你可以將密碼以Hash的方式存起來(資料庫或檔案或Registry裡), 然後將使用者輸入的密碼值用同樣的Hash Function運算得到一個Hash值, 再去比較你存下來的Hash值, 如果相同就表示密碼值一樣, 如果不同就是密碼不對. Hash是一個單向的演算法, 無法反運算回來, 換言之, 無法以Hash Value反推回原來的值. 這避免了你洩露密碼值的風險. 所以, 你不要這樣做: Username Password -------- -------- james god123 lucas sex999 anna love4ever
你應該這樣存: Username Password ------------- ------------------------------------------------------------------------- james 21298DF8A3277357EE55B01DF9530B535CF08EC1 lucas 68BB04BD54B8F6C530695E0B77DE298276A0511D anna 9F2FEB0F1EF425B292F2F94BC8482494DF430413 沒有人可以由21298DF8A32…..算出 god123 但一定要是god123才能得到21298DF8A32….. 程式如何做 ? 你需要類似MakeHash(value)這樣的 SQL Procedure加到你的SQL程式碼. Hash 的演算法有很多種, 例如SHA-1, SHA-2, MD5…安全強度不一, 你可以選擇合適的來用. 關於Hash的更多資訊與用途, 可搜尋Google或 Wikipedia 網站. 用Hash來保護使用者的密碼只是您要學的第一個課題. 不要讓別人說程式設計師只會注重程式的寫作技巧,結果寫出漏洞百出, 風險極高的應用系統來 XP_Crypt是一套寫好的 Stored Procedures,內含Hash Functions,及其它各種國際標準的加解密演算功能, 可以很容易的崁入到您的SQL程式裡. 詳細資料請參考: http://www.asiapeak.com/XPCrypt.php
- 新聞稿有效日期,至2006/10/12為止
聯絡人 :services 聯絡電話:(02)77128686 電子郵件:services@asiapeak.com
上一篇:資策會10/13開辦ITIL Foundation課程
下一篇:中小企業電子化全省巡迴講座
|