
Java技術棧
www.javastack.cn
優秀的Java技術公衆号
Oh My God!
最近檢查代碼,發現某個系統登入的邏輯直接用明文查詢資料庫,然後棧長去看了下資料庫表,居然是明文存儲,簡直不敢相信。。。
簡單介紹下,這是一個企業内部系統,就幾個功能點,公司某個部門的人在用,整個系統就由一個開發人員完成,這個開發人員畢業兩年左右了,還算是初級開發。
密碼為什麼要明文存儲呢?雖然隻是一個小小的内部系統,但這也是不合規的,也是十分嚴重的安全隐患,我便去找這個系統的開發人員了解了下情況。
棧長:這個系統為什麼要用明文存儲使用者密碼?
開發:這是内部小系統,隻有幾個人在用,應該不用加密吧
棧長:系統不分大小,所有敏感資訊都需要加密處理,更何況是密碼,趕緊修改處理下
開發:好的,我的鍋
雖然開發意識到自己的錯誤,但在如何使用加密問題上又犯難了,我讓他直接參考了别的系統的加密邏輯。
這真是一個嚴重的、低級的安全問題,當然測試也有責任,沒有檢查資料,但更多的是開發沒有這個安全意識,這個一旦發生事故,他被開除或者追責一點都不為過。
雖然低級,之前某些網際網路公司也曾暴過明文存儲導緻大量使用者和密碼洩露的事故,那麼,我們到底該如何安全的存儲呢?一般有以下幾種方案:
MD5(不推薦,不安全了)
AES(不推薦,密鑰不好儲存,可被解密)
3DES(不推薦,密鑰不好儲存,可被解密)
SHA1(不推薦,不安全了)
SHA256
SHA512
PBKDF2
bcrypt
scrypt
該使用什麼方案加密很清楚了吧,棧長之前分享過一篇很詳細的解答各種加密算法,大家可以看下,或者關注公衆号:Java技術棧,在背景回複 "算法" 擷取這篇文章。
通過這個事情,棧長真的體會到,現如今軟體行業開發人員水準真的太參差不齊了,什麼狗屎代碼我都見過。
企業為了生存,節約成本,需要招些初級開發人員無可厚非,但真的有些開發人員就真的不動腦子想事情,對自己寫的代碼一點也沒有要求,沒有追求代碼完美的意識……
當然,我也能了解,每天一大堆的 CRUD 業務需求都會讓開發人員陷在裡面不可自拔,哪來時間做代碼優化、做思考?說句大實話,能準時下班,都沒有幾個公司能做到。
即使如此,這也不能成為寫爛代碼、寫 BUG、不自我提升的理由。這完全也看人,看他想不想把事情做好,想不想提升自己,有沒有對自己有要求。
棧長肺腑之言了,希望大家都對自己有點要求,才能成就更好的自己,不要成為同僚心目中诟病的對象,自古至今,嚴于律己的混的都不會太差,一起加油吧,騷年們!
最後,你們公司用的什麼加密方式,歡迎留言分享~