struts2 升级问题
最近为了安全问题,将一系统的struts2.2.1升级到最新版本struts2.3.24。
主要方法是 先下载 struts-2.3.24.1-lib 包,再和项目的lib进行比较,找两者共同拥有的同名jar包,每个同名jar包只保留拥有最新版本号的那个。
接下就是修改相关xml文件的文件头,如将struts.xml的文件头修改为
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
之后启动应用,出现不少错误,但有些出错在网上可以很找到相关的解决方法,但有一个出错费了我很多的时间,在网上也没有搜索到解决方法,还好最后解决了,所以就记录下来。
报错信息:
Unexpected Exception caught setting 'xxx' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression 'xxx' with value ['xxx', ]
根据这个错误信息 Unexpected Exception caught setting 'xxx' ,我查看了相关的java文件里的 'xxx' 参数是否有对应的set方法,但是java文件里有对应的set方法。这下我只能求助google了,网上也有出现这种错误,但解决方法不能处理我的问题。
最诡异的是最个:
Unexpected Exception caught setting '_' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression '_' with value ['1457409527229', ]
这个诡异就在于出现了 ‘_’ 这个参数名,查看了源文件,请求链接中是没有包含这样的参数名的,请求链接类似
https://localhost/person!getInfo?personId=xx&_=1457409527229
就是后面这一 &_=1457409527229 串无中生有才让我感到奇怪。(后来才知道是使用了 jquery ajax 无缓存会自动添加后面这一窜。但这不是造成错误的原因,我把时间浪费在设置拦截器上,对参数进行过滤,结果也没用。)
在网上找不到答案后,重新看了一下所有发生错误的请求链接,结果发现几个发生错误的链接都类似
https://localhost/person!getInfo? 这样(用!调用方法)
果然是这个问题所造成的,终于找到原因所在。
我在 struts.xml 文件上加上
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
Unexpected Exception caught setting 'xxx' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression 'xxx' with value ['xxx', ]
这样的错误。(但升级之前是没有这一句的,而且项目是能正常运行的。)
但依然出现
Unexpected Exception caught setting '_' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression '_' with value ['1457409527229', ]
这样的错误,但这个无关紧要,不影响系统正常运行,如果你不想看到它,可以把struts2的开发模式关闭。
http://sukaye.iteye.com/blog/2283272
相关推荐
在本文中,我们将探讨将Struts2从旧版本升级到2.5.30的过程中可能遇到的问题及其解决方案。 升级Struts2到2.5.30的主要目标是利用新版本提供的增强功能和安全补丁。Struts2的每个新版本通常会包含对前一版本的兼容...
升级前,检查所有依赖的库和插件,确保它们与新版本的Struts2兼容,因为某些旧的API可能会被弃用或改变。 2. **升级指南**:查阅官方的升级指南,了解详细的步骤和变更。这将帮助你了解从2.3.24到2.5.26的具体迁移...
标签"struts2漏洞"、"struts2升级"和"struts2补丁"进一步强调了这次更新的目的:修复已知的安全漏洞,通过升级到更高版本来提高应用安全性,并应用特定的补丁来解决已知问题。 从压缩包子文件的文件名称列表"struts...
以上步骤概括了从Struts2 2.3.26升级到2.3.34的主要过程。每个项目都有其特定的环境和需求,因此实际操作时可能需要根据具体情况进行调整。遵循这些步骤,可以确保顺利地完成升级,同时享受到新版本带来的改进和优势...
本教程将详细解释如何将Struts2的2.0.xx或2.3.28.1版本升级到更为安全的2.5.12版本。 **1. 漏洞概述** 在Struts2的早期版本中,尤其是2.0.xx和2.3.28.1,存在一个名为CVE-2017-9791的安全漏洞,这是一个远程代码...
通常,Struts2的安全漏洞主要涉及Action、Result、Interceptor等核心组件,或者是OGNL(Object-Graph Navigation Language)表达式中的安全问题。 在Struts2的历史中,有几次著名的漏洞事件,如CVE-2017-5638(S2-...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。Struts2.2到Struts2.3的升级是一个重要的更新过程,涉及到多个方面的改动和优化,包括性能提升、安全增强以及新特性的引入...
北京时间8月22日13时,Apache官方发布通告公布了Struts2中一个远程代码执行漏洞(cve-2018-11776)。该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace 值,并且其上层动作集配置...
为了应对这些高危漏洞,开发者需要尽快将Struts 2框架升级到最新版本。在这个案例中,提供的jar包集合是针对升级到Struts 2.3.32版本的。以下是每个jar包的作用: 1. `freemarker-2.3.23.jar`:FreeMarker是一个...
Struts 2.3.35版本包含了所有必要的jar包,用于将现有的Struts 2应用程序从旧版本升级到这个更安全的版本。这一步通常涉及到替换Web应用中的旧jar文件,以确保所有的功能与最新的安全补丁兼容。 在进行Struts 2框架...
Apache官方已针对该漏洞发布安全公告,ApacheStruts 2.3.5 – 2.3.31版本及2.5 – 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-152 ,CVE-2017-5638)。该漏洞是由于上传功能的异常处理函数没有正确处理用户输入...
struts2 升级 2.3.15.1 struts2-jasperreports-plugin-2.3.15.1.jar
通过上述步骤,您可以有效地将Struts2从2.3.15.1版本升级到2.3.32版本,从而避免了S2-045和S2-046等已知的安全漏洞带来的威胁。此外,定期关注并及时更新所使用的开源库版本,对于保障系统的安全稳定运行至关重要。
9. **社区支持**:Struts2拥有活跃的社区,升级到新版本意味着可以获得最新的社区支持和技术解答,帮助解决可能出现的问题。 在升级过程中,你将需要用到"Struts2 2.3.32相关jar包",这个压缩包包含了升级所需的...
4. **依赖管理**:升级过程中,需要更新所有相关的Struts2依赖项,如struts2-core、struts2-convention-plugin等。同时,确保其他依赖库(如Spring、Hibernate等)与新版本的Struts2兼容。 5. **拦截器链调整**:...
Struts 2的升级不仅涉及jar包的替换,还需要关注其版本带来的新特性、改进和已知问题,以便充分利用新版本的优势并避免潜在风险。对于开发者来说,了解每个版本的变更日志和官方文档是非常重要的,这能帮助他们更好...
2. **依赖库更新**:升级时,需要检查并更新所有与Struts2相关的依赖库,如OGNL(Object-Graph Navigation Language),因为它们可能与新版本的Struts2存在兼容性问题。 3. **配置更改**:Struts2的配置文件`struts...
然而,Struts2 中存在着一些漏洞,例如 S2-045 漏洞,该漏洞可能会导致严重的安全问题。今天,我们将讨论如何修复 Struts2 漏洞 S2-045 而不升级 jar 版本。 漏洞概述 S2-045 漏洞是一个严重的安全漏洞,影响 ...
struts2-convention-plugin-2.3.32.jar struts2-core-2.3.32.jar struts2-spring-plugin-2.3.32.jar xwork-core-2.3.32.jar 2、删除上面原有的低版本jar 3、修改 WEB-INF\classes 目录下struts.xml 文件,...
Struts2作为一款流行的Java Web框架,极大地简化了MVC应用的开发。在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。...