Struct2.1-Struct2.5.10版本存在重要的安全漏洞,因此咱們須要升級到2.5.13版本,html
升級方法以下:java
1.須要刪除的jar包web
2.須要增長的jar包apache
3.替換structs.xmljson
位置:config/structs.xml安全
修改內容:spa
a. 頭部改成(這個是用來指定文件中容許使用那些標籤)orm
b. 關鍵地方 struts2.5 爲了提高安全性,添加了 allomethod 標籤xml
c.因爲新版本的Struts默認不能修改action的訪問後綴,不能使用通配的方式調用action裏的方法,因此添加htm
使得<constant name="struts.action.extension" value="do" />能夠生效
d.
注意這裏添加了:strict-method-invocation="false"( action標籤method屬性開啓)
4.替換web.xml
位置:WebContent/WEB-INFO/web.xml
修改內容:
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>修改爲「
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>」
緣由:新版本的filter包前面沒有ng包
5.在config目錄下添加log4j2.xml
緣由:
log4j 2.x版本再也不支持像1.x中的.properties後綴的文件配置方式,2.x版本配置文件後綴名只能爲".xml",".json"或者".jsn".因此咱們把以前log4j.properties配置信息遷移到新的log4j2.xml中。
詳細配置文件節點解析說明請參考:https://www.cnblogs.com/hafiz/p/6170702.html
,
6.在src\ICT\framework\web.struts2包下替換XssInterceptor.java
緣由:
Apache官方修改了invocation.getInvocationContext().getParameters();接口的實現,原來返回的是一個java.util.Map,如今返回了一個org.apache.struts2.dispatcher.HttpParameters類型的對象
注:頁面提交表單的時候不要用struts自帶的<s:form>和<s:form>的namespace屬性,最好也別用$("#").submit()提交,會出現action不管返回success仍是其它的,頁面就是不不變,也不是404和500,頁面就是不動。解決辦法捨棄用<s:form>,直接用普通的<form></form>表單