題組內容
四、資訊系統的安全性非常重要,要落實安全的軟體生命週期,須從安全需
求規格、安全設計階段著手整體資訊系統安全,並以安全程式設計原則
與最佳實務撰寫程式。程式安全分類可協助開發者辨識安全問題,了解
程式碼錯誤可能引發的安全問題,提升軟體安全。程式安全分類可以有:
「輸入驗證及表示(Input Validation and Representation)」
、「應用程式介面
誤用(API Abuse) 」
、「安全特性(Security Features)」 、「時間與狀態(Time
and State)」
、「錯誤處理(Error Handling)
」、「程式碼品質(Code Quality)」
、
「封裝(Encapsulation)
」等。
(二)「輸入驗證及表示」是程式處理使用者或外部輸入的安全性問題,請 說明此問題可能導致的攻擊有那些。 (10 分)
詳解 (共 1 筆)
詳解
1. SQL 注入(SQL Injection)
描述:
- 當應用程式直接將使用者輸入嵌入到SQL查詢中,且未經適當的驗證和轉義時,攻擊者可以插入惡意的SQL代碼,操控數據庫查詢。
可能的影響:
- 數據洩露:攻擊者可以獲取機密數據。
- 數據篡改:攻擊者可以修改或刪除數據。
- 數據庫損壞:攻擊者可以刪除整個數據庫或破壞數據結構。
2. 跨站腳本(Cross-Site Scripting, XSS)
描述:
- 當應用程式未對使用者輸入進行適當的轉義或過濾,攻擊者可以插入惡意的JavaScript代碼,這些代碼會在其他用戶的瀏覽器中執行。
可能的影響:
- 竊取用戶數據:攻擊者可以竊取用戶的Cookie、會話ID等敏感信息。
- 劫持用戶會話:攻擊者可以模仿用戶的操作,執行未授權的行為。
- 網站篡改:攻擊者可以改變網站內容,進行釣魚攻擊或散布惡意軟體。
3. 命令注入(Command Injection)
描述:
- 當應用程式直接使用使用者輸入構建操作系統命令並執行,且未經適當的驗證和轉義時,攻擊者可以插入惡意命令,控制服務器。
可能的影響:
- 遠程代碼執行:攻擊者可以在服務器上執行任意代碼。
- 數據洩露或篡改:攻擊者可以訪問或修改服務器上的數據。
- 系統損壞:攻擊者可以刪除文件或中止服務器服務。
4. 路徑遍歷(Path Traversal)
描述:
- 當應用程式未對使用者輸入的文件路徑進行適當的驗證,攻擊者可以插入特殊字符(如../)來訪問本應受限制的文件系統位置。
可能的影響:
- 數據洩露:攻擊者可以訪問敏感文件,如配置文件、數據庫憑證等。
- 數據篡改:攻擊者可以修改或刪除文件系統上的文件。
5. 格式化字符串漏洞(Format String Vulnerability)
描述:
- 當應用程式直接使用使用者輸入作為格式化字符串參數,攻擊者可以插入格式化符號,操控程序的內存。
可能的影響:
- 信息洩露:攻擊者可以讀取內存中的敏感數據。
- 遠程代碼執行:攻擊者可以改變程序的控制流,執行任意代碼。
6. 反序列化漏洞(Deserialization Vulnerability)
描述:
- 當應用程式反序列化不受信任的數據,攻擊者可以構造惡意數據,觸發不安全的反序列化邏輯,進而控制程序。
可能的影響:
- 遠程代碼執行:攻擊者可以在服務器上執行任意代碼。
- 數據洩露或篡改:攻擊者可以讀取或修改敏感數據。