如何修正Fortify SCA & Checkmarx SAST報告中的cross-site scripting(XSS)?

發布日期:2024/02/06

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

Cross-site scripting(XSS)是一種網頁安全弱點,允許攻擊者將惡意代碼注入網頁或應用程式。XSS 可能會損害用戶的隱私和安全,以及網站或應用程式的完整性和功能。

要修正 cross-site scripting,可以參考以下的方法:

  • 使用程式語言的函式庫清理輸入和輸出,例如刪除或編碼任何可能被瀏覽器解釋為代碼的字元。
  • 在適用的情況下強制使用更安全的函數(例如,在 JavaScript 中使用 innerText 而不是 innerHTML)。更安全的函數可防止瀏覽器執行嵌入在輸入或輸出中的任何代碼。
  • 驗證輸入以確保它們符合特定條件。例如檢查輸入是否與某種格式、長度、範圍等匹配。驗證可以通過拒絕任何不符合預期條件的輸入來説明防止 XSS 攻擊。

以下是幾個修正 cross-site scripting 的範例:

C# 程式:


sda = new SqlDataAdapter("SELECT * FROM Employees", conn);
sda.Fill(dt);
if (dt.Rows.Count > 0)
{
    string name = dt.Rows[0]["Name"];
    lblEmployeeName.Text = Encoder.HtmlEncode(name);
}

Java 程式:


Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Employees");
if (rs != null)
{
    rs.next();
    String employeeName = Encoder.htmlEncode(rs.getString("name"));
}
                    

ECMAScript (JavaScript) 程式:


let name = Cookies.get("name");

let message = 'Hi ' + Sanitizer.sanitize(name) + ', welcome!';

main.innerHTML = html;
                    

若有辦法能自動修正 cross-site scripting (XSS) 該有多好?

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

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


修正靜態檢測工具報告中的 cross-site scripting (XSS) 可以輕鬆快速

96% 的應用程式含有弱點—可被惡意攻擊者利用的已知安全風險。導入任何安全流程時的最大阻礙是如何實際修正被發現的弱點。開發者和安全工程師通常沒有足夠的精力來有效率的解決弱點。因此,許多金融業、醫療產業、高科技製造業等企業和組織已在零壹科技的協助下,導入 Lucent Sky AVM 取代或補強既有的靜態檢測工具,幫助開發團隊真正的修正弱點,並加速應用程式安全流程。

想知道 Lucent Sky AVM 可以如何協助您的開發團隊加速應用程式安全嗎?申請測試或與零壹科技連絡。

返回上一頁