--- paths: - "**/*.swift" - "**/Package.swift" --- # Swift 安全性 (Security) > 本檔案擴展了 [common/security.md](../common/security.md),包含 Swift 特定內容。 ## 金鑰管理 (Secret Management) - 對於敏感數據 (Tokens, 密碼, 金鑰),請使用 **Keychain Services** — 絕對不要使用 `UserDefaults`。 - 使用環境變數或 `.xcconfig` 檔案處理建置時的金鑰。 - 絕對不要在原始碼中硬編碼金鑰 — 反編譯工具可以輕易地擷取它們。 ```swift let apiKey = ProcessInfo.processInfo.environment["API_KEY"] guard let apiKey, !apiKey.isEmpty else { fatalError("未配置 API_KEY") } ``` ## 傳輸安全 (Transport Security) - App Transport Security (ATS) 預設為強制執行 — 請勿將其停用。 - 針對關鍵端點 (Endpoints) 使用憑證固定 (Certificate pinning)。 - 驗證所有的伺服器憑證。 ## 輸入驗證 (Input Validation) - 在顯示之前清理所有使用者輸入,以防止注入。 - 使用 `URL(string:)` 搭配驗證,而非強制解包 (Force-unwrapping)。 - 在處理前驗證來自外部來源 (API, Deep links, 剪貼簿) 的數據。