25. 在 Web 應用程式中,若未對使用者輸入進行適當的驗證與過濾,攻擊者可能利用下列何種攻擊方法,輸入惡意資料進而未經授權地存取或修改資料庫中的資料?
(A) 跨站腳本攻擊(Cross-Site Scripting, XSS)
(B) SQL 注入攻擊(SQL Injection)
(C) 跨站請求偽造(Cross-Site Request Forgery, CSRF)
(D) 釣魚攻擊(Phishing)
統計: A(13), B(56), C(11), D(2), E(0) #3671661
詳解 (共 2 筆)
這題的正確答案是 (B) SQL 注入攻擊 (SQL Injection)。
以下是詳細解析:
為什麼選擇 (B)?
-
核心機制:SQL Injection 是最典型的資料庫攻擊手法。當應用程式沒有做好輸入驗證(Input Validation)或參數化查詢(Parameterized Query)時,攻擊者可以在輸入欄位(如登入表單、搜尋框)中插入惡意的 SQL 指令片段。
-
後果:這些惡意指令會被後端資料庫當作正常的程式碼執行,導致攻擊者能夠繞過身分驗證(例如 OR 1=1)、竊取資料、修改或刪除資料,完全符合題目描述的「未經授權地存取或修改資料庫中的資料」。
其他選項為何不正確?
-
(A) 跨站腳本攻擊 (Cross-Site Scripting, XSS):
-
這是針對使用者(Client-side) 的攻擊。攻擊者將惡意腳本(JavaScript)注入到網頁中,當其他使用者瀏覽該頁面時,腳本會在受害者的瀏覽器上執行,通常用來竊取 Cookie 或進行釣魚,而不是直接攻擊後端資料庫。
-
-
(C) 跨站請求偽造 (Cross-Site Request Forgery, CSRF):
-
這是利用使用者的身分**「借刀殺人」**。攻擊者誘騙已登入的使用者點擊惡意連結,讓瀏覽器發送使用者原本不想執行的請求(如轉帳、改密碼)。這主要利用的是網站對瀏覽器的信任,而非透過輸入惡意資料來查詢資料庫。
-
-
(D) 釣魚攻擊 (Phishing):
-
這是一種社交工程手段(如偽造的登入頁面或電子郵件),誘騙使用者主動交出帳號密碼。這不屬於 Web 應用程式本身的程式碼漏洞(如輸入驗證不足)。
-
如何防範 SQL Injection?
-
參數化查詢 (Parameterized Queries / Prepared Statements):這是最有效且首選的防禦方式,將指令與資料分開處理,使輸入內容不會被當成指令執行。
-
輸入驗證與過濾 (Input Validation):對特殊字元(如 ', --, ;)進行過濾或轉義(Escape)。