SQL 注入是什麼?許多網站在開發時未對使用者輸入資料的合法性進行驗證,導致應用程式存在安全隱患。攻擊者可提交資料庫查詢代碼(通常透過瀏覽器網址列,經由正常的 Web 連接埠存取),根據程式回傳結果竊取敏感資料,這就是所謂的 SQL Injection(SQL 注入)。
SQL 注入允許攻擊者透過網頁直接修改網站資料庫。它能在資料庫中新增擁有管理員權限的使用者,進而取得系統最高權限。駭客利用此權限可任意獲取網站檔案,或在網頁植入木馬、惡意程式,對網站與訪客造成極大危害。
許多新手會下載網路上的 SQL 通用防注入程式,放在需防護頁面的頭部,以阻擋手動注入測試。但若遇到 SQL 注入分析器,這層防線極易被繞過並自動分析注入點,幾分鐘內即可破解管理員帳號密碼。
經實測發現,注入分析器並非鎖定「admin」帳號,而是鎖定權限標記(如 flag=1)。換句話說,無論管理員帳號如何變更,都無法逃過偵測。
既然無法隱藏,不如順勢而為。建立兩個帳號:一個真實管理員帳號,另一個專門誘捕注入分析器的「高權限誘餌帳號」。將誘餌帳號的密碼欄位填入超過千字的中文字元,迫使分析器在嘗試解析時進入全負荷運作,甚至導致資源耗盡當機。具體資料庫修改步驟如下:
完成上述三步後,尚須在管理員登入頁面加入字元長度限制。如此一來,即使攻擊者取得誘餌帳號的超長密碼,也會被前端驗證攔截;真實帳號則不受限制,正常登入。這招「以虛擊實」能有效癱瘓自動化注入工具,大幅提升資料庫安全性。