我的密碼沒加密
為什麼要重新開啟這個話題
最近在朋友的 Line 群組看到他分享忘記密碼的截圖,讓我想到資安前輩 Allen 的經典網站「我的密碼沒加密」,令人驚訝的是,2025 年了,我們居然還能發現有網站以明文方式儲存和傳送用戶密碼。
這就像是你去銀行開戶,行員把你的存摺密碼直接寫在存摺封面上一樣不可思議。
所以我決定重新啟動這個系列,希望能夠提醒大家注意這個不應該在現代還存在的資安問題。同時也希望透過這樣的分享,讓更多開發者重視密碼安全的重要性。
明文密碼為什麼這麼危險
如果網站以明文方式儲存密碼,就像是把你家鑰匙掛在門外一樣,當管理員或者攻擊者取得時會帶來嚴重問題:
首先,攻擊者可以例如利用 SQL injection 之類的漏洞直接看到你的密碼,更可怕的是,很多人習慣在不同網站使用相同密碼。假設你在某個小型購物網站使用 WalterPa55w0rd!
這組看似安全的密碼(有大小寫、數字、符號,超過12碼),但你的網銀也使用同一組密碼,那麼一旦小網站被攻破,攻擊者就能用這組密碼嘗試登入你的銀行帳戶。這種攻擊手法稱為密碼填充攻擊,或者俗稱「撞庫攻擊」。
明文密碼與加密密碼的差別
明文密碼就像是把你的日記直接攤在桌上,任何人經過都能看到內容。
加密密碼則是把日記用密碼鎖起來,就算別人拿到也看不懂裡面寫什麼。
在網站開發中,正確的做法是使用「雜湊」(Hashing)技術。雜湊就像是把密碼丟進一台特殊的「絞肉機」,出來的結果完全看不出原本的樣子,而且這個過程是不可逆的——就算拿到絞肉,也無法還原成原來的肉塊。
常見的雜湊演算法包括 bcrypt、SHA-256 等。這樣即使資料庫被攻擊者入侵,他們也無法直接取得用戶的原始密碼。
判斷方法很簡單:如果你使用「忘記密碼」功能後,收到的是重設連結,那”可能”就沒有此問題;如果直接收到你的原始密碼,那就有問題了。
如何發現網站的密碼管理問題
想要檢查一個網站是否正確處理密碼,可以從以下幾個角度觀察:
忘記密碼功能測試
當你使用忘記密碼功能時,正常的網站會寄送重設連結到你的信箱或手機,讓你自己設定新密碼。如果網站直接把你的原始密碼寄給你,那就代表他們把密碼以明文方式儲存。修改密碼頁面檢查
在修改密碼的頁面,如果系統能夠顯示你目前的密碼明文(而不是星號或點點),這也是一個警訊。不過現在大部分的問題都出現在忘記密碼功能上。客服人員告訴你原始密碼
如果你聯繫客服,客服人員能直接告訴你原始密碼,那就更糟糕了,連客服人員都可以取得你的密碼。
簡單來說,正常的網站應該「不知道」你的原始密碼,只能協助你重新設定一組新的。
建議改善方向
對於有類似狀況的網站,建議可以考慮以下改善措施:
- 改用密碼重設機制:發送重設連結而非原始密碼
- 實施密碼雜湊儲存:使用 bcrypt 等安全的雜湊演算法
- 考慮更換登入帳號方式:使用 email 或手機號碼取代身分證字號
這些改善不僅能提升用戶資料的安全性,也符合現代網站開發的最佳實踐。希望網站開發者能夠重視這個議題,為用戶提供更安全的服務環境。
歡迎大家提供案例!
如果你發現其他有類似問題的網站,歡迎寄到 [email protected]
,標題請寫「明文密碼案例分享」。讓我們一起為網路安全盡一份心力。