struts2升級到Struts 2.3.15.1的步驟(最新安全版本)

來源:互聯網
上載者:User
 最近struts安全問題影響很大啊,iteye上面也有新聞:Apache Struts團隊6月底發布了Struts 2.3.15版本,由於該版本被發現存在重要的安全性漏洞,因此該團隊今天發布了Struts 2.3.15.1安全更新版本。 

新聞地址:http://www.iteye.com/news/28053

 

       因此我升級了下當前項目的struts版本,原來是2.2.3,現在升級到2.3.15.1

 

      首先下載jar包:http://struts.apache.org/download.cgi#struts23151

Essential Dependencies Only:

struts-2.3.15.1-lib.zip (19MB) [PGP] [MD5]

 

從下載的jar包拷貝核心包:

antlr-2.7.2

aopalliance-1.0

asm-3.3

asm-commons-3.3

asm-tree-3.3

builder-0.6.2

classworlds-1.1

commons-beanutils-1.8.0

commons-collections-3.1

commons-chain-1.2

commons-digester-2.0

commons-fileupload-1.3

commons-io-2.0.1

commons-lang3-3.1

commons-lang-2.4

commons-logging-1.1.3

commons-logging-api-1.1

commons-validator-1.3.1

freemarker-2.3.19

ognl-3.0.6

struts2-convention-plugin-2.3.15.1

struts2-core-2.3.15.1

struts2-dojo-plugin-2.3.15.1

struts2-jfreechart-plugin-2.3.15.1

struts2-json-plugin-2.3.15.1

struts2-junit-plugin-2.3.15.1

struts2-spring-plugin-2.3.15.1

xwork-core-2.3.15.1

 

到此先備份原來的所有jar,以防萬一……

刪除項目WEB-INF/lib下:

asm-3.1

struts2-spring-plugin-2.2.3

struts2-junit-plugin-2.2.3

struts2-json-plugin-2.2.3

struts2-jfreechart-plugin-2.2.3

struts2-dojo-plugin-2.2.3

struts2-core-2.2.3

ognl-2.7.3

freemarker-2.3.15

commons-collections-3.1

commons-io-1.3.2

commons-fileupload-1.2.1

commons-beanutils-1.7.0

commons-validator-1.3.1

xwork-core-2.2.3

 

最安全的做法:

        以核心jar為準,如果在原lib裡有同名但不同版本的jar就replace,沒有就直接copy,替換方式遵循“誰新替換誰”的原則。

      (小插曲:我拷貝了核心jar裡的antlr-2.7.2,但是我原來的項目裡有antlr-2.7.6,我沒注意,結果報java.lang.NoSuchMethodError: antlr.collections.AST.getLine()的錯誤,刪除antlr-2.7.2即可)

         對於struts2開頭的jar,只要原來有的,都在核心jar裡找到替換的版本,沒有同名的就不換。

 

請注意:原lib裡的commons-collections、commons-lang、commons-logging要保留。

 

 

重新整理後(請確保更換lib之前項目是運行無誤的…),重新設定tomcat並運行……

 

如果遇到一些NoSuchMethod或者NotClassFound等等的提示,檢查一下是不是誤刪了原來的某個jar;

 

如果看到如此提示:

 

*********************************************************************** 
*                               WARNING!!!                            * 
*                                                                     * 
* >>> FilterDispatcher <<< is deprecated! Please use the new filters! * 
*                                                                     * 
*           This can be a source of unpredictable problems!           * 
*                                                                     * 
*              Please refer to the docs for more details!             * 
*            http://struts.apache.org/2.x/docs/webxml.html            * 
*                                                                     * 
***********************************************************************

 

在web.xml裡把FilterDispatcher 替換成StrutsPrepareAndExecuteFilter(org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)

 

 

如果看到如此提示:

 

*********************************************************************** 
*                               WARNING!!!                            * 
*                                                                     * 
* >>> ActionContextCleanUp<<< is deprecated! Please use the new filters! * 

*                                                                     * 
*           This can be a source of unpredictable problems!           * 
*                                                                     * 
*              Please refer to the docs for more details!             * 
*            http://struts.apache.org/2.x/docs/webxml.html            * 
*                                                                     * 
***********************************************************************

 

同樣是在web.xml裡把ActionContextCleanUp替換成StrutsPrepareAndExecuteFilter(org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)

 

       若原來就配置有StrutsPrepareAndExecuteFilter,則把ActionContextCleanUp去掉。

       

       比如我這裡修改後的樣子:

    Xml代碼   <span style="font-size: 16px;"><!-- STRUTS配置 -->        <!-- <filter>  升級到2.3.15.1後要去掉           <filter-name>struts2-cleanup</filter-name>           <filter-class>               org.apache.struts2.dispatcher.ActionContextCleanUp           </filter-class>       </filter>       <filter-mapping>           <filter-name>struts2-cleanup</filter-name>           <url-pattern>/*</url-pattern>       </filter-mapping>  -->                      <filter>           <filter-name>struts2</filter-name>           <filter-class>           org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter           </filter-class>       </filter>       <filter-mapping>           <filter-name>struts2</filter-name>           <url-pattern>*.action</url-pattern>           <dispatcher>REQUEST</dispatcher>           <dispatcher>FORWARD</dispatcher>       </filter-mapping>   </span>  

 

 

關於升級後的web.xml配置請參考:

http://struts.apache.org/development/2.x/docs/webxml.html

原地址:http://weilikk.iteye.com/blog/1931527

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.