客戶端防禦局限
- ActiveX、USB 密碼盤、客戶端程式皆屬客戶端技術,黑客可逆向分析、繞過。
- 根本上:客戶端程式碼在攻擊者控制環境中執行,不可信。
伺服器端驗證碼優勢
- 驗證碼文字儲存於伺服器 Session,客戶端無法取得。
- 內容隨機產生,無規律可循。
- 圖片經潦草字體、雜點干擾,電腦視覺難以辨識,人腦輕鬆閱讀。
攻擊成本劇增
枚舉字典攻擊需嘗試數萬~億次密碼。加入驗證碼後,每次嘗試皆需人工辨識圖片並輸入,極大增加攻擊者時間成本,初級攻擊者將放棄。
驗證碼核心概念
利用「電腦擅長邏輯運算、不擅長圖像辨識」與「人腦擅長圖像辨識、不擅長重複勞動」的差異,強迫人腦參與每一次驗證,使自動化攻擊不可行。
延伸形式
- 語音驗證碼 (合成語音 + 雜訊)。
- 圖片語意判斷 (如識別表情:哭/笑/流鼻血)。
- 滑塊拼圖、點選文字等行為驗證。
ASP.NET 實作定位
本課程屬 C# 發現之旅圖形編程系列,使用 System.Drawing 於伺服器端產生驗證碼圖片。