Oh My God!
最近檢查代碼,發現某個系統登錄的邏輯直接用明文查詢數據庫,然后棧長去看了下數據庫表,居然是明文存儲,簡直不敢相信。。。
簡單介紹下,這是一個企業內部系統,就幾個功能點,公司某個部門的人在用,整個系統就由一個開發人員完成,這個開發人員畢業兩年左右了,還算是初級開發。
密碼為什么要明文存儲呢?雖然只是一個小小的內部系統,但這也是不合規的,也是十分嚴重的安全隱患,我便去找這個系統的開發人員了解了下情況。
棧長:這個系統為什么要用明文存儲用戶密碼?
開發:這是內部小系統,只有幾個人在用,應該不用加密吧
棧長:系統不分大小,所有敏感信息都需要加密處理,更何況是密碼,趕緊修改處理下
開發:好的,我的鍋
雖然開發意識到自己的錯誤,但在如何使用加密問題上又犯難了,我讓他直接參考了別的系統的加密邏輯。
這真是一個嚴重的、低級的安全問題,當然測試也有責任,沒有檢查數據,但更多的是開發沒有這個安全意識,這個一旦發生事故,他被開除或者追責一點都不為過。
雖然低級,之前某些互聯網公司也曾暴過明文存儲導致大量用戶和密碼泄露的事故,那么,我們到底該如何安全的存儲呢?一般有以下幾種方案:
- MD5(不推薦,不安全了)
- AES(不推薦,密鑰不好保存,可被解密)
- 3DES(不推薦,密鑰不好保存,可被解密)
- SHA1(不推薦,不安全了)
- SHA256
- SHA512
- PBKDF2
- bcrypt
- scrypt
該使用什么方案加密很清楚了吧,棧長之前分享過一篇很詳細的解答各種加密算法,大家可以看下,或者關注公眾號:Java技術棧,在后台回復 "算法" 獲取這篇文章。
通過這個事情,棧長真的體會到,現如今軟件行業開發人員水平真的太參差不齊了,什么狗屎代碼我都見過。
企業為了生存,節約成本,需要招些初級開發人員無可厚非,但真的有些開發人員就真的不動腦子想事情,對自己寫的代碼一點也沒有要求,沒有追求代碼完美的意識……
當然,我也能理解,每天一大堆的 CRUD 業務需求都會讓開發人員陷在里面不可自拔,哪來時間做代碼優化、做思考?說句大實話,能准時下班,都沒有幾個公司能做到。
即使如此,這也不能成為寫爛代碼、寫 BUG、不自我提升的理由。這完全也看人,看他想不想把事情做好,想不想提升自己,有沒有對自己有要求。
棧長肺腑之言了,希望大家都對自己有點要求,才能成就更好的自己,不要成為同事心目中詬病的對象,自古至今,嚴於律己的混的都不會太差,一起加油吧,騷年們!
最后,你們公司用的什么加密方式,歡迎留言分享~
關注Java技術棧微信公眾號,棧長將繼續分享好玩的 Java 技術,公眾號第一時間推送,在公眾號后台回復:Java,可以獲取歷史 Java 教程,都是干貨。
推薦去我的博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
生活很美好,明天見~