注入攻擊(SQL injection)是指駭客透過網頁的輸入單元,將SQL語法或網頁程式碼藉著文字輸入的表單,將這些字串回傳,當網頁程式處理這些輸入的字串時,就會執行當中的程式碼,將資料外洩或導致資料庫系統損毀等資安問題。
探究網站會遭受到注入攻擊,主要是因為網頁程式對於輸入資料的驗證及處理方式不夠嚴謹,讓駭客藉此攻擊網站及資料庫。要避免網站遭到注入攻擊,開發人員得在網頁程式撰寫和資料庫設定上多費些功夫。開發人員可以針對下列4大部分下手,減少網站遭到攻擊的機會。
一、限制存取權限
資料庫權限要設定好。最好針對網站的資料庫存取,建立對應權限的個別帳號,且詳細設定該帳號存取資料的權限。例如使用者帳號僅需要查詢資料,就應該關閉其他資料庫存取功能,避免駭客透過以使用者帳號發動攻擊,任意將資料刪除或修改,造成資料庫損毀。
二、隱藏錯誤訊息
在ASP.NET網頁執行錯誤時,通常瀏覽器會直接顯示相關除錯訊息,這些訊息有時候會提到網頁程式碼或隱含資料庫架構的訊息,雖然有助於網站開發時的程式除錯,但如果網頁要上線運作,則應該將這些錯誤訊息隱藏,以免駭客藉此窺得網站或資料庫的組成架構,例如資料庫欄位名稱。
三、使用預儲程序
網頁存取資料庫時,應儘量使用預儲程序(Stored Procedures)處理SQL語法,以避免直接存取資料庫。使用預儲程序,可以將網頁的應用程式和資料庫存取彼此隔離,以減少前端網頁程式碼直接存取資料庫的機會,加強資料庫系統的安全性。
四、檢查文字輸入方塊
網站在處理任何文字輸入時,在執行前都要先檢查輸入字串,透過判斷式檢查字串內是否包含了影響網站運作的特殊字串或跳脫字元(Escaped Charaters),像是單引號「’」這個字元,在ASP.NET以及許多程式語法中屬於用來注解的字元,如果駭客在密碼輸入的文字方塊輸入單引號,讓網頁程式在執行到這個字元後,就會將後面的程式碼變更為注解,讓程式碼錯亂。
除了利用判斷式檢查輸入字串,網站開發時可將網頁文字輸入的部分,利用選單替代字串輸入,也能減少被駭客下手的機會。文⊙林郁翔
iThome歡迎讀者提問,請將你所遇到的各種企業IT疑難雜症,寄至iThome編輯部:QA@mail.ithome.com.tw
熱門新聞
2026-01-12
2026-01-12
2026-01-12
2026-01-12
2026-01-12