---
# System prepended metadata

title: "\U0001F6E1️ IPAS 資安能力鑑定：陷阱題"

---

# 🛡️ IPAS 資安能力鑑定：必考陷阱題

:::info
**給同學的話：**
資安考試中，有幾個觀念是「一考再考」的送分題。這份講義整理了最常見的幾個觀念誤區，請務必把這些觀念釐清，看到題目就能秒殺！
:::

[TOC]

---

## 1. 敏感資料處置：密碼絕對不可寫死 (Hardcode)

### 🔑 核心觀念
很多新手為了方便，會把資料庫密碼、API Key 直接寫在程式碼裡面。這是大忌！因為原始碼如果外流（例如上傳到 GitHub），駭客就直接拿到鑰匙了。

* **❌ 錯誤做法**：`String dbPassword = "MySecretPassword123";`
* **✅ 考試標準答案**：移出程式碼，放在 **環境變數 (Environment Variables)** 或 **加密的設定檔 (Config Files)**，且設定檔需嚴格控管權限 (ACL)。
* **🌟 實務最佳解 (加分題)**：使用專用的 **秘密管理系統 (Secret Management System / Vault)**，程式執行時才動態去抓取密碼。

:::warning
**進階思考：雞生蛋問題 (Secret Zero)**
如果不把密碼寫在程式，改放在「密碼櫃 (Vault)」，那程式去開櫃子的鑰匙要放哪？
現代資安架構會使用 **IAM 角色 (Identity)** 或 **Service Account**，讓程式憑藉「身分」直接存取密碼櫃，徹底消滅靜態密碼。
:::

### 📝 實戰例題
**題目：**
某程式設計師為了連線資料庫便利，將資料庫管理者帳號與密碼直接寫在 Java 程式碼變數中。請問這種行為主要違反了下列哪項安全實務？

(A) 違反最小權限原則
(B) 容易遭受 SQL Injection 攻擊
\(C\) 敏感資訊未妥善保護 (Hardcoded Credentials)
(D) 違反輸入驗證原則

> **答案：\(C\)**
> **解析：** 把密碼寫在程式碼中叫 Hardcoding。這跟 SQL Injection 無關，單純是「把鑰匙掛在門上」，非常危險。

---

## 2. 輸入過濾：白名單 (Whitelist) > 黑名單 (Blacklist)

### 🛡️ 核心觀念
當你要檢查使用者輸入的東西安不安全時：
* **黑名單 (Blacklist)**：列出「壞人」。例如：禁止 `.exe`。
    * **缺點**：壞人太多了列不完，駭客可以換個副檔名（如 `.php`）就繞過了。
* **白名單 (Whitelist)**：列出「好人」。例如：只准上傳 `.jpg`。
    * **優點**：除了好人，其他全部擋掉，安全性最高！

### 📝 實戰例題
**題目：**
小明正在開發一個「大頭貼上傳」功能，為了防止駭客上傳惡意程式腳本，下列哪一種檢查機制的安全性最高？

(A) 檢查副檔名，若是 `.exe` 則阻擋
(B) 僅在前端使用 JavaScript 檢查
\(C\) 設定白名單，僅允許 `.jpg`, `.png` 副檔名，其餘拒絕
(D) 檢查檔案名稱長度

> **答案：\(C\)**
> **解析：** 黑名單永遠 ban 不完，只有「正面表列」的**白名單**才是最嚴謹的防禦方式。

---

## 3. 驗證機制：前端驗證無效，後端才是守門員

### 🔒 核心觀念
* **前端驗證 (Frontend)**：只是為了讓使用者好操作（例如：提醒你 Email 格式打錯）。**防君子不防小人**，駭客可以輕易繞過。
* **後端驗證 (Backend)**：伺服器收到資料後，一定要再檢查一次。**資安防禦必須做在後端。**

### 📝 實戰例題
**題目：**
某購物網站在結帳頁面使用 JavaScript 檢查「購買數量 > 0」。駭客透過攔截封包工具，將數量改成 `-50` 送出，結果導致結帳金額變成負數。請問漏洞原因為何？

(A) 未使用 HTTPS 加密
(B) 依賴前端驗證，缺乏後端驗證
\(C\) 資料庫未設定防火牆
(D) 密碼複雜度不足

> **答案：\(B\)**
> **解析：** 駭客繞過了瀏覽器（前端）的檢查，證明伺服器（後端）沒有把關。記住：**永遠不要相信來自使用者端的資料**。

---

## 4. 應變計畫：沒演練過的計畫，只是紙上談兵

### 📢 核心觀念
企業為了合規（例如應付稽核），通常都會撰寫厚厚的「營運持續計畫 (BCP)」、「災難復原計畫 (DRP)」或「資安事件應變計畫 (IRP)」。

但重點來了：**「文件寫了不代表做得到」**。
人員會離職、系統會更新、威脅型態會變。如果沒有定期**演練 (Drill/Exercise)** 與**測試 (Testing)**，當真的發生勒索病毒攻擊或機房失火時，大家只會陷入慌亂，計畫根本派不上用場。

* **演練的目的**：找出計畫中的漏洞（例如：發現備份檔案其實壞了、發現關鍵聯絡人電話換了）、訓練人員熟悉流程。

### 📝 實戰例題
**題目：**
A 公司為了符合法規要求，制定了詳細的「資安事件應變與災難復原計畫」。然而，在某次假日遭遇大規模勒索軟體攻擊時，IT 人員卻發現備份系統的回覆速度遠低於預期，且負責關鍵決策的主管一直連繫不上，最終導致公司業務停擺超過三天。請問造成此嚴重後果最主要的原因為何？

(A) 缺乏導入自動化防禦設備 (如 IPS/WAF)
(B) 備份策略未採用 3-2-1 原則
\(C\) 計畫制定後缺乏定期的演練與測試，導致計畫無效
(D) 未購買資安險來轉移風險

> **答案：\(C\)**
> **解析：** 題目提到「有計畫」且有「備份」，但實際發生時卻發現「回覆太慢」和「找不到人」，這典型就是缺乏**演練 (Drill)** 的後果。只有透過演練，才能驗證計畫的有效性 (Effectiveness)。

---