Day 15:注入攻擊(SQL Injection)原理是什麼?對中小企業主的意義為何
注入攻擊(SQL Injection)簡單說就是駭客用一句暗號直接搬空你的資料庫。為什麼你的網站後台一打穿,客戶名單全外洩?
前二天一位資安界的先進分享自己公司官網的改變,以前是分為前端顯示介面和後端資料庫,只要一有需要修改就需要前後端工程師都動起來。後來他們發現,其實公司官網要的功能並不複雜,於是採用靜態網頁(純html,只要前端美編,不含後端資料庫),如此一來只需要很小的心力就可以維護。
在新心資安漫長的業務開發路上,我們接觸了很多中小企業和非營利組織,大部分他們選官網的方式,最多的是直接用FB社群功能(由FB負責資安)或Google部落格(由google負責資安),其次則是自己買一個網域架網站(自行負責資安)。
那對於中小企業主而言,自行負責或給大廠負責,考量點為何?SQL Injection又會拿走我們什麼資料?原則上,對於非營利組織,我們建議可以用FB或Google部落格。而對中小企業需要經營品牌形像的網站,我們建議自行架網站,但內容可以考慮用靜態的網頁,公告電子郵件和公司電話,用來做為往來。
但現在AI的時代,寫網站已經越來越容易由AI完成了,如果您公司想架的是一個電商網站,就會需要保存客戶個資、聯繫方式和訂單資料,以及註冊與登入資料。如此後端一定需要一個資料庫。而資料庫查詢的語法,稱為SQL語法。濫用SQL語法(加料)的查詢,會迫使資料庫吐出本不應揭露的資料,比方完整的客戶個資。
在筆者前二年擔任教育單位的攻防檢測員時,SQL Map(一種自動化SQL Injection)是公認最容易找到網站入侵破口的攻擊工具。檢測員會先在目標網站上嘗試註冊一個使用者帳號,然後嘗試登入,從而檢視網站在顯示頁面時所用到的參數名稱。然後使用SQL Map透過辨識資料庫類型、搜尋該資料庫預設的管理資料表、列出目標資料表的所有欄位名稱、列出目標資料表的資料內容,這樣的方式來加以攻擊。
所以謹記,靜態網頁一定是最安全的,如果只是要單方面推給使用者資訊,則建議用google的部落格較安全。除非是要自動化客服、訂單、讓使用者在網站上查詢資訊,才有必要用後端的資料庫。
各位中小企業主,您知道嗎,除了一個指令拿走你所有資料外,SQL注入還可以在不知道你密碼情況下,用admin(系統管理員)帳號登入,密碼就填 or 1=1’,如果您的網站程式設計師沒有檢查使用者輸入的話,叮咚,駭客就取得系統管理員權限了。
即使你檢查了,駭客還是可以猜,比方8位數密碼,駭客用「如果第N碼正確,停留5秒」的方式來執行登入指令,一碼一碼的一直猜,如果您的網站程式沒有錯3次就鎖定15分鐘不得登入的話,駭客是真的有耐心一碼一碼破解的。最後我們要說,靜態網站最安全,如果要有資料庫功能,就要學習很多安全程式碼的實作,或透過AI來補強。