top of page

【Confluence 8.8 更新】Structs 帶來兩大突破性改變,大幅提升安全性的版本升級!

首先,什麼是 Struts ?

Struts 是一個開源的、用於構建基於 Java 網頁應用程式的框架。它是一個 MVC(模型 - 視圖 - 控制器)框架,幫助開發者更有效地組織和管理他們的網頁應用程式。


簡單來說,Struts 提供了一個結構化的方式,讓開發者可以更容易地建構和管理複雜的網頁應用程式。它不僅提供了基本的功能,例如處理表單、檢查資料是否正確,還有協助掌控程式的運行流程。尤其適合開發大型的、複雜的網頁應用程式。


Confluence 8.8 兩大更新
  1. Struts 參數註解的改動,清楚表明參數來源

  2. 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 專業的顧問團隊歡迎您來信或來電洽詢!


60 views0 comments

Komentarze


bottom of page