回答
密碼必須在數據庫中使用單向散列算法進行散列處理。這使您不必知道他們的密碼。選擇正確的算法很重要。由於多個漏洞,MD5被認爲是不安全的。 SHA1還沒有被證明是不安全的,因爲MD5具有這種不安全性,但它被認爲在理論上很弱。最好轉換爲SHA2或SHA256。 SHA2由政府要求2010年
http://en.wikipedia.org/wiki/MD5
末密碼應鹽漬。這可以防止對密碼進行字典攻擊。通過組合一條隨機信息意味着攻擊者無法拿出一堆單詞並逐一嘗試,以查看系統中的哈希匹配情況。
http://en.wikipedia.org/wiki/Salt_(cryptography)
重點加強有助於戰鬥力弱密碼,因爲弱密碼傷害你的系統的安全性。您可以使用散列算法迭代幾次1000次,以提高暴力破解密碼的複雜性。
http://en.wikipedia.org/wiki/Key_strengthening
確保用戶通過https提交他們的登錄web應用程序。否則,他們會在明確提交密碼。不要試圖讓Javascript變得聰明。只需使用https並完成它。
你必須權衡可用性與隱私。使用電子郵件地址而不是用戶名是非常好的,因爲它很容易記住,但如果你有社交網站,人們不會喜歡你發佈他們的電子郵件地址。有時候很高興接受用戶名或電子郵件地址。
您需要考慮的另一件事是您的用戶將如何保持登錄到您的系統。會話,cookies等。會話很簡單,但如果您的網站擁有數百萬用戶,則會變得非常昂貴。您可以使用memcache或Java中的衆多分佈式緩存中的一個來存儲它們。但是,其他替代方案正在使用HMAC。請記住,與單向哈希不同,HMAC具有必須在服務器上受保護的私鑰。如果您選擇使用HMAC + cookie來識別用戶,請採取措施以某種形式的對稱加密來保護私鑰。在HMAC不能使用過去的情況下也有一個死亡日期。 HMAC只應該在固定的時間段內有效。您的軟件必須執行該操作。不要依靠cookie超時爲你做這件事。
要考慮的其他事情是使用OpenID,因爲它確實可以幫助用戶訪問您的網站,而無需通過註冊過程。我有一個Android應用程序,我沒有先要求提供帳戶,但如果他們選擇使用某些功能,我會要求他們註冊。而且,通過不強制他們登錄,用戶的留存率更高。人員在註冊過程中下降。
確保您的應用程序中的方法在執行之前強制某人進行身份驗證。在調用方法之前,您需要有一種方法來強制所有方法調用通過應用程序的一部分,並且如果它們未通過身份驗證,則將它們重定向到登錄。嘗試並記住他們所去的頁面。
還有其他的,但我不完全確定這是你在找什麼。祝你好運,並且在安全方面與谷歌做一點研究是值得的。
謝謝;我正在建立一個檢查清單,以便我可以驗證我的新系統並檢查一些舊系統。 – MathGladiator 2010-11-05 03:11:40
常見的邊緣情況:
- 人們忘記了密碼。
- 人們關閉Javascript,Flash,cookies ...任何技術,你可以想到依靠。
- 安全性很難,你所要做的就是搞砸一次,毀掉你的月。 我的推薦:讓別人去做。如果你可以避免重新發明那個輪子,那就這樣做。
- 1. 的.htaccess邊緣情況
- 2. 歡樂:自定義ACK邊緣情況
- 3. Solr系統空間使用情況
- 4. 如何在Swift中用邊緣情況返回單個值?
- 5. 開放的系統,默認情況下
- 6. IndexedDB的交易自動提交的邊緣情況的行爲
- 7. PIL在不影響邊緣的情況下替換顏色
- 8. 這是PowerShell類型解析機制中的邊緣情況嗎?
- 9. 檢測物體接觸屏幕邊緣的情況
- 10. 邊緣檢查座標系
- 11. 崇高的文本3微軟邊緣構建系統
- 12. 具有邊緣排水溝的Flexbox網格系統
- 13. C-指針遞增邊緣情況和評價順序
- 14. 矩形網格 - 我需要對邊緣情況
- 15. 重載增量運算,循環和邊緣情況
- 16. 天青 - 需要futher解釋關於邊緣情況
- 17. 如何在沒有系統用戶的情況下搜索Shiro中的AD組?
- 18. 在不使用系統的情況下從perl調用java類
- 19. 默認情況下,邊緣擴展名顯示在地址欄旁邊
- 20. Scala使用情況統計
- 21. 操作系統的Git客戶端使用情況 - 百分比是多少?
- 22. 單個用戶在網絡/系統崩潰的情況下登錄
- 23. 960網格系統 - 12山坳 - 接觸容器邊緣
- 24. 如何在不影響邊緣的情況下將樣式應用到Chrome
- 25. 如何在不使用邊緣頂尖黑板的情況下製作側板?
- 26. 在沒有X-Window系統的情況下使用OpenGL
- 27. 在沒有kldload的情況下向FreeBSD添加系統調用
- 28. 實施攔截文件系統使用情況的kext
- 29. 在不使用系統時鐘的情況下管理任務
- 30. 用C++獲取系統硬盤使用情況
什麼是您的操作參數(因此邊緣情況?)這個問題非常模糊。你能提供一些關於你正在開發的系統的更多信息嗎?例如。你爲什麼從頭開始開發? – davmac 2010-11-05 02:08:59