如何修正 Fortify Source Code Analyzer 報告中的 SQL injection ?

靜態程式碼掃描工具,例如 Fortify Source Code Analyzer,被許多企業和組織用來檢測應用程式中的安全弱點。但對許多開發者來說,Fortify Source Code Analyzer 的報告被視為麻煩製造者,因為它們雖然指出了弱點(不論是真的或是誤報),但卻沒有提供任何修正這些弱點的方法。誰來修正報告中的弱點?

SQL injection 是一種嚴重的安全威脅,可能會危及網頁應用程式的數據和功能。當攻擊者將惡意 SQL 語句注入使用者輸入欄位(如表單或 URL)時,就會發生這種情況,然後由基礎資料庫執行這些欄位。SQL injection 可允許攻擊者訪問、修改或刪除敏感數據,在伺服器上執行命令,甚至接管資料庫。

修正 SQL injection 取決於使用的程式設計語言和資料庫。以下是一些準則:

  • 將預準備語句與參數化查詢一起使用。這意味著首先定義 SQL 代碼,然後稍後將使用者輸入作為參數傳入。這樣,資料庫就可以區分程式碼和數據,防止任何惡意 SQL 影響查詢邏輯。
  • 使用存儲過程。這些是存儲在資料庫中的預定義 SQL 查詢,可由應用程式調用。存儲過程還可以使用參數來接受使用者輸入,並且可以執行輸入驗證和錯誤處理。
  • 使用允許清單輸入驗證。這意味著根據允許的值或模式清單檢查用戶輸入,並拒絕任何不匹配的輸入。這有助於從使用者輸入中篩選出任何惡意 SQL 字元或關鍵字。
  • 轉義所有使用者提供的輸入。這意味著在使用者輸入中的任何特殊字元(如引號、分號或註釋)之前添加轉義字元。這可以防止使用者輸入脫離預期的 SQL 上下文並形成惡意 SQL 語句。

以下是幾個修正 SQL injection 的範例:


var username = Request.Form["username"];
var password = Request.Form["password"];
var sql = "SELECT * FROM Users WHERE Username = @username AND Password = @password";
var command = new SqlCommand(sql, connection);
command.Parameters.Add(new SqlParameter("@username", username));
command.Parameters.Add(new SqlParameter("@password", password));
command.ExecuteNonQuery();
                    

String username = request.getParameter("username");
String password = request.getParameter("password");
String query = "SELECT * FROM Users WHERE Username = ? AND Password = ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, username);
statement.setString(2, password);
statement.execute();
                    

若有辦法能自動修正 SQL injection 該有多好?

Lucent Sky AVM 和靜態程式碼掃描工具一樣會指出弱點,同時提供 Instant Fix - 一段安全的程式碼片段,能夠直接插入程式碼中來修正 cross-site scripting (XSS)、SQL injection 和 path manipulation 這些常見的弱點。

以 .NET (C# 和 VB.NET)和 Java 應用程式來說,Lucent Sky AVM 可以修正最多達 90% 所找到的弱點。


一起使用 Fortify Source Code Analyzer 和 Lucent Sky AVM

Fortify Source Code Analyzer 只會告訴你弱點在哪裡,而 Lucent Sky AVM 會指出它們的位置以及修正方式(並且實際為你修正他們,你喜歡的話)。 Fortify Source Code Analyzer 是被設計來供資訊安全專業人士使用,因此設計理念是找出大量的結果,再依賴資訊安全專家來移除其中的誤報。Lucent Sky AVM 則是專注於找出會真正影響應用程式安全的弱點,並依照你或你的開發與資訊安全團隊的設定來可靠的修正這些弱點。 你可以深入了解 Lucent Sky AMV 的修正流程


Fortify Source Code Analyzer,Lucent Sky AVM 以及法規遵循

如果你的組織的法規遵循要求要修正 Fortify Source Code Analyzer 找到的所有結果(或是符合特定條件的結果,例如嚴重和高風險),Lucent Sky AVM 可以被調整來找出一樣的結果,並提供更多的功能 - 修正最多達 90% 的弱點。


有效果的報告

許多靜態程式碼掃描工具是由資訊安全專家所設計來給其他的資訊安全專家使用。 因此,它們需要由專業人士操作,而且產出的報告和結果難以實際幫助開發者。 Lucent Sky AVM 提供為開發者與資訊安全專家所設計的報告,提供分析結果以及 Instant Fixes (能夠直接修正如 cross-site scripting 和 SQL injection 等常見弱點的程式碼片段),讓不是資訊安全專家的使用者能夠用來強化程式碼的安全。

對於需要法規遵循報告的企業來說,Lucent Sky AVM 能協助開發與資訊安全團隊通過 Fortify Source Code Analyzer 的檢測並減少誤報帶來的困擾,同時大幅地降低強化應用程式安全所需要的時間和精力。 要進一步了解 Lucent Sky AVM 和靜態程式碼掃描工具報告的差別,請下載報告比較表


修正 Fortify Source Code Analyzer 報告中的弱點可以輕鬆快速

申請測試來親自體驗 Lucent Sky AVM。 想知道 Lucent Sky AVM 可以如何在你的環境中和 Fortify Source Code Analyzer 共用,別再等了!

連絡我們
Try Lucent Sky AVM