複選題
69. 下列何者為資料隱碼攻擊(SQL Injection)的防禦方法?
(A)對字串過濾並限制長度
(B)加強資料庫權限管理,不以系統管理員帳號連結資料庫
(C)對使用者隱藏資料庫管理系統回傳的錯誤訊息,以免攻擊者獲得有用資訊
(D)不要在程式碼中標示註解 。
答案:登入後查看
統計: A(12), B(13), C(13), D(7), E(0) #3711424
統計: A(12), B(13), C(13), D(7), E(0) #3711424
詳解 (共 1 筆)
#7432666
A 對:字串過濾+限制長度
這是在擋使用者輸入惡意 SQL 片段。
例如有人輸入:
' OR '1'='1
如果程式完全不檢查,就可能被騙過登入。
所以「過濾特殊字元、限制輸入長度」是防禦之一。
但它不是最強防線,只能算基本防護。
⸻
B 對:資料庫權限管理
這很重要。
不要讓網站程式用 資料庫最高權限帳號 連線。
例如網站只需要查會員資料,就不要給它:
DROP TABLE
DELETE 全資料庫
ALTER DATABASE
萬一真的被 SQL Injection 打進來,傷害會被限制住。
這叫:
最小權限原則
像家裡鑰匙,不會把保險箱、車庫、公司大門都綁同一串。
不然小偷笑到有酒窩。
⸻
C 對:隱藏資料庫錯誤訊息
這也是防禦方式。
如果網站直接顯示:
SQL syntax error near 'users'
Table name: admin_account
Column: password_hash
攻擊者就會知道資料表名稱、欄位名稱、SQL 結構。
所以正式網站通常只顯示:
系統忙碌中,請稍後再試。
真正錯誤細節留在伺服器 log 裡,不給外人看。
⸻
D 錯:不要在程式碼中標示註解
這個不是 SQL Injection 的主要防禦方法。
程式碼註解通常是在後端原始碼裡,正常使用者看不到。
SQL Injection 攻擊重點是:
使用者輸入的資料,被當成 SQL 指令執行。
所以跟「程式碼裡有沒有註解」沒有直接關係。
除非是把註解暴露在前端 HTML 或公開原始碼,那才可能洩漏資訊,但那不是本題標準的 SQL Injection 防禦重點。
⸻
最簡單記法
SQL Injection 防禦看這幾個:
輸入要檢查、SQL 要參數化、權限要最小、錯誤別外洩。
本題沒有給「參數化查詢 / Prepared Statement」,所以選:
A、B、C
0
0