驗證碼原理
防止暴力破解 (字典攻擊)。若登入介面無驗證碼,攻擊者可自動化嘗試百萬組密碼,數小時內即可破解。
驗證碼防禦機制
- 連續錯誤鎖定帳號
- 驗證碼 (CAPTCHA):伺服器端產生圖形驗證碼,人眼可辨識但機器難以自動解析。
圖形驗證碼實作重點
- 建立
Bitmap,繪製雜訊線、背景色。
- 產生隨機字串 (字母數字混合)。
- 使用
Graphics.DrawString 繪製文字,套用隨機字型、大小、旋轉、顏色。
- 輸出
image/jpeg 串流,並將驗證碼存入 Session 驗證。
進階強化
- 使用扭曲、干擾線、噪點提高機器辨識難度。
- 引入語音驗證碼照顧視障使用者。
- 考慮第三方服務 (reCAPTCHA、hCaptcha) 降低維護成本。
