阿摩線上測驗 登入

申論題資訊

試卷:106年 - 臺灣銀行/海外或大陸地區資訊人員 - 程式設計(含安全程式設計)#64490
科目:程式設計
年份:106年
排序:0

申論題內容

(三)SQL Injection 使程式開發上面臨極大挑戰,請問避免 SQL Injection 攻擊的方法 為何?【10 分】

詳解 (共 3 筆)

詳解 提供者:canb1friend
1.設計程式時 使用大量參數來設計資料存取功能 2.在組合SQL字串時 針對傳入的參數作字元取代 3.使用其他更安全的方式連接SQL資料庫 例如已修正過SQL資料隱碼問題的資料庫連接 4.使用SQL隱碼系統。
詳解 提供者:hchungw

避免SQL Injection攻擊主要依靠於開發過程中的安全編碼實踐和適當的防護措施。以下是一些關鍵的方法和技術,可以幫助減少或消除SQL Injection的風險:

  1. 使用參數化查詢(Parameterized Queries)

    • 參數化查詢是防範SQL Injection最有效的手段之一。它要求開發者在SQL語句中使用參數,而不是直接將用戶輸入拼接到SQL語句中。這樣做可以讓數據庫區分代碼和數據,從而避免惡意輸入被當作SQL代碼執行。
  2. 使用存儲過程(Stored Procedures)

    • 存儲過程也可以減少SQL Injection攻擊的風險,因為它們將SQL代碼封裝在數據庫層面。使用存儲過程時,應確保它們不是從用戶輸入動態構建的SQL語句。
  3. 進行輸入驗證

    • 對所有用戶輸入進行嚴格的驗證,拒絕任何不符合預期格式的輸入。這包括驗證數據類型、長度和格式。雖然輸入驗證不能完全防範SQL Injection,但它是一層重要的防禦措施。
  4. 使用ORM框架(Object Relational Mapping)

    • ORM框架提供了一個介於應用程序和數據庫之間的抽象層,通常包含對SQL Injection防護的內建支持。這是通過自動生成參數化查詢來實現的。
  5. 限制數據庫權限

    • 確保應用程序使用的數據庫賬號僅擁有執行必要操作的最小權限。這樣即使攻擊者利用SQL Injection漏洞,也能大幅度限制他們能夠執行的操作。
  6. 使用Web應用防火牆(WAF)

    • WAF可以提供額外的安全層,用於監控和過濾可能的SQL Injection攻擊嘗試。
  7. 進行安全審計和測試

    • 定期進行代碼審計和安全測試,包括使用自動化工具和手動檢查來識別潛在的安全漏洞。

採取這些方法和技術可以顯著降低應用程序面臨SQL Injection攻擊的風險,從而保護數據的安全和完整性。

詳解 提供者:牛奶鍋
1.在設計應用程式時,完全使用參數化查詢(Parameterized Query)來設計資料存取功能。
2.在組合SQL字串時,先針對所傳入的參數加入其他字元(將單引號字元前加上跳脫字元)。
3.如果使用PHP開發網頁程式的話,需加入跳脫字元之功能(自動將所有的網頁傳入參數,將單引號字元前加上跳脫字元)。
4.使用php開發,可寫入html特殊函式,可正確阻擋XSS攻擊。
5.其他,使用其他更安全的方式連接SQL資料庫。例如已修正過SQL注入問題的資料庫連接元件,例如ASP.NET的SqlDataSource物件或是 LINQ to SQL。
6.使用SQL防注入系統。
7.增強WAF(英語:Web_application_firewall)的防禦力

By wiki