【網站防護】如何透過人機辨識強化網站安全
相信對於有建立網站提供對外服務的公司來說,如何強化網站的防護一直都是重要的課題,除了基本的防火牆、定期更新和維護、安全漏洞掃描,有些公司也會額外採購 WAF(Web Application Firewall),以強化網站在 SQL injection,XSS 攻擊的額外保護。
但是如果要防止爬蟲或是使用機器人與自動化程式進行的惡意行為,就需要使用人機辨識對連線來源作區分,分辨合理連線,並只允許合法使用者進行操作。
在網站上使用的人機辨識為 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),中文翻譯為「全自動區分計算機與人類的圖靈測試」, CAPTCHA 會提供使用者由演算法產生的文字、圖片或數字,並要求使用者進行相對應的操作,以此來驗證使用者是否為真實的人類。
常見的 CAPTCHA 種類如下:
- 文字驗證:要求使用者檢視一張包含程式難以辨識的文字的圖片,之後輸入正確對應的文字內容,用來分辨他們是否為真實的人類。
- 圖片驗證:要求使用者在一組圖片中選擇跟提供條件相對應的圖片,例如選擇包含紅綠燈、斑馬線、狗、貓等圖片,並根據使用者的輸入,判斷是否為真實的人類。
- 數學問題驗證碼:要求使用者計算一個數學問題的正確答案。
- 聲音驗證:要求使用者聽取一段特殊處理過的聲音,並根據聽到的內容輸入特定文字或數字。
- 行為驗證:透過分析滑鼠移動軌跡、鍵盤輸入速度或其他交互方式來確定使用者是真實的人類。
實作上只要使用現有的 CAPTCHA 程式庫或服務,就可以簡易的透過 API 實作 CAPTCHA 功能。
儘管爬蟲在合法合理的場境下使用會是有用的工具,但是藉由 CAPTCHA 的保護,可以盡量避免網站遭受以下危害:
- 資料遭到污染:網站可能儲存爬蟲程式自動產生的大量資料,通常是用來嘗試登入或取得網站資料,這些爬蟲程式產生的資料,會造成數據庫的空間浪費跟降低資料的有效性。
- 內容遭到盜用:網站的內容可能被爬蟲盜取、濫用、或使用在非法用途上。
- 增加伺服器負擔:如果爬蟲大量訪問同一個網站,或是大量下載資源,可能造成伺服器變慢或正常使用者無法訪問。
- 機密資料外洩:爬蟲可能藉由撞庫攻擊或使用盜取的憑證成功登入,並因此導致機密外洩。
雖然 CAPTCHA 可以減少以上提到的危害,但是需要使用者進行輸入的行為,通常會讓使用者感到不便,這時候可以考慮使用行為驗證的種類,自動收集使用者的資訊進行判斷,減少使用者的輸入行為。
在使用上,CAPTCHA 不只可以針對整個網站進行保護,也可以只針對與重要資料傳輸,或交易有關的請求與網頁才使用 CAPTCHA。
透過選擇合適的 CAPTCHA 種類,可以在幾乎不影響使用者體驗的情況下,強化網站安全性,將 CAPTCHA 與 WAF 等產品同時使用,也可以提供更全面的網站安全防護。常見的選擇包含 Google reCAPTCHA、hCaptcha、2CAPTCHA、Anticaptcha… 使用者可以根據網站的需求、價格、地區選擇適合的服務。
作者:Eric Huang
CloudMile 台灣資安工程師,負責處理公司專案有關資安方面議題,並介紹與協助客戶使用雲端資安解決方案