為了讓大家更深入的了解和使用C#,我們將開始這一系列的主題為“C#發現之旅 ”的技術講座。考慮到各位大多是進行WEB數據庫開發的,而所謂發現就是發現我們所 不熟悉的領域,因此本系列講座內容將是C#在WEB數據庫開發以外的應用。目前規劃的主要內 容是圖形開發和XML開發,並計劃編排了多個課程。在未來的C#發現之旅中,我們按照由淺入 深,循序漸進的步驟,一起探索和發現C#的其他未知的領域,更深入的理解和掌握使用C#進 行軟件開發,拓寬我們的視野,增強我們的軟件開發綜合能力。
本系列課程配套的演 示代碼。
課程說明
大家好,在上一節課程中,我們開始了解了如何在在ASP.NET中使 用圖形編程的技術。今天我們針對驗證碼技術深入的了解圖形編程在ASP.Net中的應用。
驗證碼技術是目前很多WEB程序采用的一種安全防御技術。系統在登錄的時候不但要 輸出用戶名和密碼,還要額外輸入一種隨機生成的驗證碼文本,此時用戶需要正確的輸入這 三個信息才能登錄到系統中。
由於驗證碼技術能有效的抵御某些黑客攻擊,因此得到 相當廣泛的應用,而且在一些C/S系統中也采用了這種源自web開發的技術。
驗證碼原 理
在現在的軟件運行環境下,安全成為大部分軟件必須考慮的問題,黑客無處不在 ,攻擊方式日益豐富,尤其是WEB系統由於其開放性更是遇到嚴峻的考驗,黑客事件層出不窮 ,造成的損失和影響也不斷變大,對此我們軟件開發人員需要對此有相當的認識並采取措施 抵御各種黑客攻擊。
枚舉字典安全攻擊
在各種黑客攻擊中,很常見的就是套 取用戶名和密碼,其中很多是采用枚舉字典的方式來不斷的測試用戶名和密碼。
比如某黑客 獲得一銀行賬號,然後打開賬號的開戶銀行的網上銀行登錄界面。分析其中的Html代碼,發 現其頁面粗制濫造,沒有驗證碼,沒有任何安全控制,只要求輸入銀行賬號和取款密碼就可 以登錄。黑客心中大喜,馬上寫了一個程序,直接調用HTTP協議,使用程序來模擬浏覽器向 網上銀行服務器提交賬號和密碼嘗試登錄。由於取款密碼是6位阿拉伯數字,因此也就有一百 萬種組合,黑客的電腦從六個零開始測試一直到六個九,這一定會測試出真正的密碼。黑客 找到一台寬帶高速上網的電腦,運行套取取款密碼程序後就忙其他事了,假設這台電腦1秒能 測試10個密碼,於是花費10萬秒的時間肯定能找到密碼。10萬秒也就是27小時,一天多點的 時間,實際上很可能用不了那麼長的時間。黑客外頭轉了一圈回來,發現密碼已經找到了, 於是馬上登錄網上銀行撈錢,或者偽造一個銀行卡去ATM機上提取現金。也就是說黑客最多花 了一天時間即可獲得數目不可預知的非法收入。