1. 程式人生 > >struts漏洞解決方法

struts漏洞解決方法

解決方案:
1、刪除jar包
freemarker-2.3.8.jar               
 xwork-2.0.7.jar                                    
 ognl-2.6.11.jar                            
 struts2-core-2.0.14.jar                    
 struts2-jfreechart-plugin-2.0.11.jar       
 struts2-spring-plugin-2.0.11.jar
2、新增jar包
commons-lang3-3.2.jar                      
 freemarker-2.3.22.jar                      
 javassist-3.11.0.GA.jar                    
 ognl-3.0.14.jar                            
 struts2-config-browser-plugin-2.3.28.1.jar 
 struts2-core-2.3.28.1.jar                  
 struts2-jfreechart-plugin-2.3.28.1.jar     
 struts2-json-plugin-2.3.28.1.jar           
 struts2-spring-plugin-2.3.28.1.jar         
 xwork-core-2.3.28.1.jar      
3、修改web.xml檔案
 將原先的過濾器配置
    
        struts2
        
            org.apache.struts2.dispatcher.FilterDispatcher
         
    
替換為
    
        struts2
        
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
         
    
4、修改struts.xml檔案(可選)
 如果之前有模組的struts配置檔案使用了動態代理,而且升級後之後還要繼續使用這一特性,則要在struts.xml檔案中,開啟動態代理。配置入下:
 <constant name="struts.enable.DynamicMethodInvocation" value="true"/>


並同時修改模組的strutsxxx.xml檔案中的寫法,將原先的:        

<result name="add" type="redirect-action">msgShow_add?opType=add&amp;msgFlag=2&amp;msg=success</result> 

更改為:

<result name="add" type="redirectAction">msgShow_add?opType=add&amp;msgFlag=2&amp;msg=success</result>
  

5、升級後jsp頁面中如果使用了自定義標籤,如v_maxlength,v_minlength等,會由於不識別而報錯。需要將struts2-core-2.1.1.jar中的幾個檔案,替換為原先老版本中的struts2-core-2.0.14.jar中的對應檔案。因為原先的jar包中已經將這幾個檔案做了修改,添加了對這些自定義標籤的支援。需要替換的檔案如下:
 (1)struts2-core-2.1.1.jar解壓后里面有個template目錄,下面是標籤的格式,你可以修改的 

標籤定義的META-INF目錄下,有個檔案struts-tags.tld


(2)所有要修改的檔案