如何修正 Checkmarx CxSAST 報告中的 SQL injection?

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

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 和 Checkmarx CxSAST 一樣能精確地找出弱點在程式碼中的位置。但和靜態檢測工具不同,Lucent Sky AVM 也實際修正找到的弱點。 它能產生 「Instant Fixes」-一段安全的程式碼片段,能夠直接插入程式碼中來修正 cross-site scripting (XSS)、SQL injection、path manipulation 等常見的弱點。

開發者可以檢視 Instant Fix 並逐一或整批套用它們,也可以將 Lucent Sky AVM 與 CI pipeline 整合,當有新的程式碼時,弱點都能自動地被檢查、修正、測試。


一起使用 Checkmarx CxSAST 和 Lucent Sky AVM

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


Lucent Sky AVM + Checkmarx CxSAST = 輕鬆的法規遵循

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


有效果的報告

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

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


修正 Checkmarx CxSAST 報告中的 SQL injection 可以輕鬆快速

96% 的應用程式含有弱點—可被惡意攻擊者利用的已知安全風險。導入任何安全流程時的最大阻礙是如何實際修正被發現的弱點。開發者和安全工程師通常沒有足夠的精力來有效率的解決弱點。因此,數百個企業和組織選擇以 Lucent Sky AVM 取代或補強既有的靜態檢測工具,幫助開發團隊真正的修正弱點,並加速應用程式安全流程。

想知道 Lucent Sky AVM 可以如何在你的環境中和 Checkmarx CxSAST 共用,申請測試或與我們連絡。

連絡我們
Try Lucent Sky AVM