複選題
69. 下列何者為資料隱碼攻擊(SQL Injection)的防禦方法?
(A)對字串過濾並限制長度
(B)加強資料庫權限管理,不以系統管理員帳號連結資料庫
(C)對使用者隱藏資料庫管理系統回傳的錯誤訊息,以免攻擊者獲得有用資訊
(D)不要在程式碼中標示註解 。

答案:登入後查看
統計: 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