首先,什麼是 Struts ?
Struts 是一個開源的、用於構建基於 Java 網頁應用程式的框架。它是一個 MVC(模型 - 視圖 - 控制器)框架,幫助開發者更有效地組織和管理他們的網頁應用程式。
簡單來說,Struts 提供了一個結構化的方式,讓開發者可以更容易地建構和管理複雜的網頁應用程式。它不僅提供了基本的功能,例如處理表單、檢查資料是否正確,還有協助掌控程式的運行流程。尤其適合開發大型的、複雜的網頁應用程式。
Confluence 8.8 兩大更新
Struts 參數註解的改動,清楚表明參數來源
OGNL 類白名單,限制了程式碼來源
1. Struts 參數註解
在 Confluence 8.8 之前,只有 “complex” 參數(即由傳回 DTO 的 getter 表示的參數)需要使用 @ParameterSafe 進行註解。而在 Confluence 8.8 中,所有用於參數注入的 Struts Action setter、getter 或 public fields 都必須使用新 @StrutsParameter 進行註解。
新的 @StrutsParameter 註釋提供了有關參數注入深度的細粒度控制,並帶來以下優勢:
提高安全性,防止未經授權的參數注入。
提高可讀性,清楚表明哪些參數是注入的。
若要變更為新的 @StrutsParameter 註解,您需對所有受影響的 Struts Action 進行以下更改:
將 @ParameterSafe 替換為 @StrutsParameter 註解。
根據需要,設置 @StrutsParameter 註釋的 depth 參數。
2. OGNL 類白名單
在 Confluence 8.8 之前,OGNL 技術一直是許多令人頭痛的漏洞來源。Atlassian 開發了許多安全措施來預防這類漏洞再次發生,其中一項功能即是 OGNL 類白名單。
在 Confluence 8.8 中,OGNL 表達式將受到嚴格的白名單管控,此更改旨在提高安全性,防止被執行惡意程式碼 (RCE) 。各位也不用擔心,大多數 plugins 無需額外配置即可運行,Struts 會聰明地辨別哪些是由我們安裝的 App,並將參數註解自動地列入白名單中。但是,如果您遇到任何問題或相關 log 警告,您可以使用新的 Struts 模組手動將任何必要的類別列入白名單。
結語
Confluence 8.8 中的 Struts 變更提供了一些新的功能和結構調整,但同時也帶來了一些挑戰。
透過這篇部落格,我們希望能夠幫助開發者更好地理解這些變更,並提供相應的升級建議,以確保您能在新版本中能夠順利運行。
如果您對於本次 Confluence 版本更新有任何疑問或想了解相關細節,Linktech 專業的顧問團隊歡迎您來信或來電洽詢!
Opmerkingen