Struts2框架

Struts2框架

Struts2框架是一個用於開發Java EE網路應用程式的開放原始碼網頁應用程式架構。它利用並延伸了Java Servlet API,鼓勵開發者採用MVC架構。Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更加整潔的MVC設計模式實現的Web應用程式框架。

基本信息

簡介

緣起於Apache Struts的WebWork框架,旨在提供相對於Struts框架的增強和改進,同時保留與Struts框架類似的結構。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名義合併至Struts。2007年2月第一個全發布(full release)版本釋出。

Struts2引入了幾個新的框架特性:從邏輯中分離出橫切關注點的攔截器、減少或者消除配置檔案、貫穿整個框架的強大表達式語言、支持可變更和可重用的基於MVC模式的標籤API, Struts2充分利用了從其它MVC框架學到的經驗和教訓,使得 Struts2框架更加清晰靈活。

開發目標

Struts1設計的第一目標就是使MVC模式套用於web程式設計。在過去10年,Struts在更好的web套用方面所做的工作是值得肯定的。在某些方面,Struts社區注意到這一框架的局限性,所以這個活躍的社區通過對MVC運行模式的重新理解並同時引入一些新的建築學方面的設計理念後,新的Struts2框架結構更清晰,使用更靈活方便。

這一新的結構包含套用邏輯的橫切面攔截器,基於注釋的配置以減少和去除XML形式的配置檔案,功能強大的表達式語言,支持可更改、可重用UI組件的基於微MVC的標籤庫。Struts2有兩方面的技術優勢,一是所有的Struts2應用程式都是基於client/server HTTP交換協定,The Java Servlet API揭示了Java Servlet只是Java API的一個很小子集,這樣我們可以在業務邏輯部分使用功能強大的Java語言進行程式設計。

Struts 2提供了對MVC的一個清晰的實現,這一實現包含了很多參與對所以請求進行處理的關鍵組件,如:攔截器、OGNL表達式語言、堆疊。

特點

•簡單的基於POJO的操作

•簡化的可測試性

•執行緒安全

•AJAX支持

•jQuery外掛程式

•Dojo Toolkit外掛程式(不建議使用)

•Ajax客戶端驗證

•模板支持

•支持不同的結果類型

•外掛程式易於擴展

•REST外掛程式(基於REST的動作,無擴展名的URL)

•常規外掛程式(通過約定和注釋進行動作配置)

•Spring外掛程式(依賴注入)

•Hibernate外掛程式

•支持設計

•JFreechart外掛程式(圖表)

•jQuery外掛程式(Ajax支持,UI小部件,動態表,圖表)

•Rome plugin

•plugin

漏洞情況

漏洞簡介

ApacheStruts 2.3.5 – 2.3.31版本及2.5 – 2.5.10版本存在遠程代碼執行漏洞(CNNVD-201703-152 ,CVE-2017-5638)。該漏洞是由於上傳功能的異常處理函式沒有正確處理用戶輸入的錯誤信息。導致遠程攻擊者可通過傳送惡意的數據包,利用該漏洞在受影響伺服器上執行任意命令。

漏洞危害

攻擊者可通過傳送惡意構造的HTTP數據包利用該漏洞,在受影響伺服器上執行系統命令,進一步可完全控制該伺服器,造成拒絕服務、數據泄露、網站造篡改等影響。由於該漏洞利用無需任何前置條件(如開啟dmi ,debug等功能)以及啟用任何外掛程式,因此漏洞危害較為嚴重。

處理手法

Struts2開發組常被指漏洞修復手法不妥,要么修復後仍有可利用,要么無法修復並長期閒置。

其中包括一個由標記為S2-003的漏洞報告引發了一連串的遠程執行問題,官方多次修復仍沒能完全解決,甚至是報告提交者多次提交其繞過方案警醒開發組注意。

2013年7月發布了2.3.15.1發布版,但在修復事項中公開了一段遠程執行漏洞的示例代碼,被黑客圈內利用,導致了中國大陸大量使用Struts2的網站被入侵。

相關詞條

相關搜尋

熱門詞條

聯絡我們