免費開始練習
司法三等申論題 113年 [檢察事務官電子資訊組] 程式語言

第 一 題

📖 題組:
一、請回答下列問題:(每小題 10 分,共 30 分)
📝 此題為申論題,共 3 小題

小題 (一)

請簡要說明何謂「SQL 資料隱碼攻擊(SQL injection)」。

思路引導 VIP

看到這題,首先要點出 SQL Injection 的「核心定義」(惡意字串拼接導致的代碼注入)。接著,從程式語言理論的角度解釋其「發生原理」(資料被編譯器誤認為可執行指令),最後務必補充「防範方法」(如參數化查詢 Prepared Statement 的語義隔離機制),以展現全面且具深度的專業知識。

🤖
AI 詳解
AI 專屬家教

【破題】 「SQL 資料隱碼攻擊(SQL Injection)」是一種常見的代碼注入漏洞。攻擊者透過在應用程式的輸入介面中插入惡意的 SQL 語法片段,欺騙後端資料庫執行非原設計預期的指令。 【論述】

小題 (二)

系統使用下列 SQL 陳述(SQL statement)查詢資料庫以判斷是否為合法使用者。當該 SQL 陳述被執行時會檢查輸入的 username 與 password 是否存在於資料庫中,如果執行該 SQL 陳述有回傳任何結果,則表示認證成功,反之認證失敗。 SELECT * FROM db_user WHERE username='' AND password='' 假設惡意攻擊者可以輸入任意或是的資料,請以一個例子說明該 SQL 陳述會產生 SQL injection 的問題。

思路引導 VIP

看到此題,應立即聯想到 SQL Injection 的核心原理:攻擊者透過輸入特定的控制字元(如單引號 ')來提早閉合字串,並植入恆真邏輯(如 OR 1=1)或註解符號(如 --)。答題時除了給出具體惡意輸入外,必須清楚展示「被竄改後的完整 SQL 語法」,並從編譯與語義解析的角度,解釋為何該輸入能改變原有的邏輯判斷,最後補充防禦機制以獲取高分。

🤖
AI 詳解
AI 專屬家教

【破題】 SQL Injection(資料隱碼攻擊)肇因於應用程式未對使用者的輸入進行妥善過濾或語義隔離。攻擊者透過輸入特定的保留字元(如單引號),迫使資料庫引擎的語法分析器(Parser)將「資料」誤判為可執行的「程式碼」,進而改變原始 SQL 語句的語義邏輯。 【論述】

小題 (三)

請舉出至少兩種常見預防「SQL injection 攻擊」的方法並簡要說明。

思路引導 VIP

看到 SQL Injection,應立即聯想到這是「資料被編譯器/直譯器誤認為指令」的語義混淆問題。解題策略需從「資料與指令分離」的根本機制(參數化查詢/PreparedStatement)出發,再補充應用層面的防禦(白名單輸入驗證/字元跳脫)或框架層次(ORM 模型)。答題時若能結合記憶體層級的運作原理(如執行計畫快取、抽象語法樹解析)並附上生命週期標註的程式碼,將能大幅提升專業深度。

🤖
AI 詳解
AI 專屬家教

【破題】 SQL Injection(SQL 注入攻擊)的本質是「資料與指令混淆」的語義漏洞(Semantic Flaw),導致不可信的使用者輸入被資料庫引擎誤認為可執行的抽象語法樹(AST)節點。防禦的核心原則在於「將程式碼邏輯與資料嚴格分離」。 【論述】

升級 VIP 解鎖