导航

公墓网

当前位置: 首页 > 公墓资讯

struts 2-struts 2.5.33

更新时间:2025 08 27 17:25:31 作者 :庆美网 围观 : 19次

大家好,今天小编来为大家解答struts 2-struts 2.5.33这个问题,很多人还不知道,现在让我们一起来看看吧!

最近,Youxuan网络安全研究所监视了Apache正式发布了Apache Struts 2的安全声明。当开发人员使用{…}语法进行强制OGNL评估时,某些标签属性仍然可以双重评估。在标签属性中解析未验证的原始用户输入时,可能会导致远程代码执行。

Apache Struts 2是用于开发具有广泛应用程序的Java EE Web应用程序的开源Web框架。在这方面,Youxuan网络安全研究所建议用户及时将Apache Strut 2升级到最新版本。同时,请在资产自我检查和脆弱性保护方面做得很好,以确保公司自身的安全。

2。脆弱性影响的范围

struts 2-struts 2.5.33

漏洞等级:高危,漏洞评分:8.5。2.0.0ApacheStruts2.5.29

l 受影响的版本:ApacheStruts2.5.30

3。维修建议

l 不受影响的版本:官方版本现在发布了一个新版本来修复此漏洞。要求受影响的用户尽快更新以保护他们。下载链接:https://Struts.apache.org/download.cgi#struts-ga

1、版本升级L可以通过在所有标签中设置值=\“ \”来减轻此漏洞;

l添加org.apache.commons.collection.beanmap到排除班级黑名单。

4。Uxuan软件解决方案

Youxuan的下一代防火墙支持此漏洞保护,并且需要将功能库升级到20220419及以上。升级路径是:系统管理系统维护系统升级,立即单击升级或离线下载功能库以手动升级。

2、临时防护措施升级功能库后,选择包含策略中功能的IPS模板以及配置日志记录和阻塞。发生攻击时,Youxuan的下一代防火墙将截获并记录下来。

Struts2.3.32升级到2.5.26详细步骤(无敌版)

Struts2确实每隔几天就有一个脆弱性。特别是当暴露漏洞时,建议升级到最新版本。这也是无语的。最新版本与老板完全不同。这部电影需要这次从Struts2.3.32升级到最新版本。这很重要。 Google和Baidu已经有几天没有解决方案了。也许是因为每个人的项目都不同。有些使用纯注释,有些则使用配置文件,因此可能适合您但不适合其他的解决方案。最后,我必须自己解决。我已经整理了下面的解决方案,其中一些只能通过修改源代码来解决。

在这里,我将首先讨论要升级的项目背景,因为不同体系结构的项目升级方法可能有所不同。我使用的项目是Struts2.3.32,然后是用纯注释调用的动态方法,即直接将请求的注释添加到操作中,然后每个方法都是请求路径,并且无需修改配置文件。格式如下:

如果您以后要添加请求,也很简单。只需添加额外的方法,然后添加额外的@Result返回值即可。这是我的项目结构,以下升级步骤也基于此结构。但是,即使每个人都有不同的结构,也应该有一些参考。无论如何,我基于的逻辑是,如果我真的无法解决它,请从源代码开始。

I think the first step before upgrading is to build a project with the latest version of Struts2, to ensure that your upgrade package can be used first, and then to compare the differences between your projects one by one, so I first built an example by myself: Strtus2.5.26 Dynamic method call annotation mode environment construction: https://www.suibibk.com/topic/788791049202958336

在这里,您需要访问官方网站以下载Struts2.5.26的环境包和源代码软件包:http://STRUTS.APACHE.ORG/DOWNLOAD.CGI#STRUTS2526

当我在本地构建它时,似乎tomcat需要是tomcat8,但是在我的项目上使用Apache-Tomcat-7.0.96似乎还可以,但是JDK似乎需要1.8,否则会报告各种错误,具体取决于每个人的特定情况。

2.5.26之后,支撑杆的过滤器也已更改,并且缺少NG的包装路径。

也需要修改Struts.xml的配置文件,例如积极启动状态方法调用,然后添加全局方法允许的配置,如下:

那么配置文件标头版本也应更改为2.5

注意:注意1:软件包中的名称必须与操作中的@parentpackage注释相同。注2:我认为需要在Internet上添加一些东西:严格的使用方法=“ false”。我升级了,发现没有必要。

在这里导入的JAR软件包应该是您自己构建和测试的JAR软件包,也就是说,从Struts-2.5.26 \\ Apps \\ struts2-showcase \\ Web-Inf \\ Lib获取JAR软件包,但仍需要如下处理

删除弹簧的开头,删除瓷砖的开头,删除带有不同版本的Jar套件,这些版本已经存在于项目中新准备好的JAR软件包中,即替换旧的Jar包装。我将根据前缀直接删除它。但是,您必须在删除之前备份,因为可能会有更多删除,因此您需要还原相应的JAR软件包:

实际上,以下错误将在随后的启动阶段报告:

防护后效果:因为新的log4j-api2.12.1.jar软件包没有此软件包路径,因此您需要在上面还原log4j-1.2.13.jar。

报错1:Caused by: java.lang.NoClassDefFoundError: Lorg/apache/log4j/Logger;,因此您必须还原Commons-HTTPClient-3.0.Jar回来

当然,每个人的旧项目都可能有所不同,因此您不一定会遇到这两个错误。

上传您在步骤3中整理的Jar软件包。

在开始之前,我需要先准备一个测试链接。我想在此处执行此步骤,因为我们的项目只有一个开发环境,因此不会影响正常发展。然后,我在nginx中进行了一条路径拦截,拦截了某个路径并将其转发到我的应用程序中。

如果您开始报告找不到某些类,那么上述本身就已将其删除。只需还原并删除更多即可。如果仍然找不到东西,只需在网上找到它并将其放入即可。这不是问题。遇到的最困难,最具破坏性的问题是以下问题:

如何做?查看@Result的源代码后,我发现先前的版本名称是字符串,现在新版本名称是字符串数组。我的上帝,也就是说,您需要在注释中使用以下模式吗?

我看到Internet上有一个人的解决方案,可以将项目中的所有名称=“ xxx”更改为name={“ xxx”}。当然,这可以解决,但是注释实际上即使您要求:

您仍然可以使用名称=“ XXX”模式,因此我们应该能够消除此原因。然后互联网表示,重新编译项目是可以的。当然,上述更改为{“ xxxx”}的方法也可以重新编译项目。但是,我们的项目太旧了,不能重新编译,有些课程无法与生产环境相匹配。如果每个文件需要重新注册并重新撤回编译字节码类并切换到生产环境,那么我们的旧项目不太可能无法在本地启动,并且其中一些仍然会报告一个错误,因此我无法在此处使用此解决方案。

后来我想,我必须看看当前名称是什么,然后我复制了struts2.5.26的源代码的副本,并找到了使用此注释的地方。实际上,它是以下类:

在同一路径中创建此类,并修改源代码并将其打印出来:

将编译的文件放入项目的类目录中,重新启动,并发现打印的日志如下:

显然,名称既不是字符串也不是数组,它是一个例外对象:

百度发现了例外:AnnotationTypemismatchException。

公共类AnnotationTypemismatchexceptextends RuntimeException当汇编(或序列化)注释后,将注释的类型更改(或程序)试图访问注释的元素时,将引发此异常。

应该是我们以前的源代码汇编基于名称作为字符串。现在我们不直接重新编译。更换JAR软件包后,新注释报错2:找不到commons下面的http包类无法处理先前编译的类,然后报告错误。这也解释了为什么在网上重新编译解决方案。如果我不能重新编译该怎么办?解决方案如下:重写Result和DefaultResultMapBuilder重写org.apache.struts2.convention.annotation.Annotation.Annotation.Result Annotation and org.apache.struts2.convention.defaultresultmapbuilder

defaultresultmapbuilder方法创建循环的fromannotations以直接获取它

然后可以启动项目,并且印刷结果名称也是字符串。这相当于拥有以下两个解决方案

Result和DefaultResultMapBuilder。只需重新编译项目解决方案1:如果无法重新编译项目,请重写结果和DefaultresultMapBuilder,这与以前的模式兼容。

注意:尚不清楚更改这两个位置是否会产生太大影响,但是我们知道的是该名称不能使用数组模式,并且必须根据先前的单个值模式进行开发。

发现访问时报告以下错误

这是JSP报告的错误,因为一些选项卡已经在最新版本中更改了,因此您需要相应地更改此问题:如果您有这样的代码

需要更改为:

然后再次访问并成功输入。

修改Web.xml,将过滤器更改为最新版本,Motify struts.xml,主动启动状态方法调用,以替换最新版本的JAR软件包。如果可以重新编译项目,则直接重新编译项目。如果无法重新编译项目,请修改相应的源代码以进行兼容处理。这里修改的源代码是:结果和DefaultresultMapBuilder修改JSP的相应标签,您需要检查所有JSP,以查看是否需要修改它以查看它是否与Spring兼容,因为我们的项目直接用于调用微服务,还可以使用Spring。您需要继续测试,以查看是否存在任何问题。修改源代码以验证其是否对其他功能产生影响。您唯一知道的是,@Result中的名称无法使用数组名称{“ xxxx”}模式,并且必须按照先前的字符串模式名称=“ xxxx”继续进行. 3

《java高级框架应用开发SSH》第一部分:Struts2

3《java高级框架应用开发SSH》,这本书是我的大学教科书,主要是关于SSH框架的。我在互联网上看到一些公司仍在使用Struts2。只需查看Struts2并将其与Spring MVC Servlet进行比较,以更好地理解Servlet。

这本书分为三个主要部分。第一部分谈论了从第1章到第6章的Struts2,第二部分谈论了从第7章到第9章的冬眠,第三部分谈论了从第10章到第12章的春季。

该框架是应用系统的骨架,标准化软件开发中的重复任务并以可重复使用的形式提供使用。一个好的框架定义了开发和集成组件的标准。

大多数Web应用程序使用表示层中的支柱,在服务层中的弹簧和持久性层中的冬眠。域模块可以使用弹簧框架将其分为服务层。

Struts的体系结构实现了MVC设计模式,该模式将这些概念映射到Web应用程序的组件和概念中。与使用ActionServlet作为控制器的Struts1不同,Struts2使用FilterDisPatcher作为核心控制器。

Struts2 Core配置文件是Struts.xml,请求和处理器映射,并通过操作标签进行配置。

Struts2工作流程:

(1)浏览器发送请求,例如登录。

(2)核心处理器FilterDisPatcher决定根据请求调用适当的操作。

(3)Webwork的链条自动将通用功能应用于请求,例如验证,工作流或文件上传等。

(4)回调操作的执行方法。执行方法首先获得用户请求参数,然后执行某个业务操作。它可以将数据保存到数据库中,并从数据库中检索信息。由于操作是控制器,因此它调用以处理用户请求的业务逻辑组件(模型)。

(5)操作扣除方法的处理结果信息将输出到浏览器,这可以是HTML页面,图像,PDF文件等。TRUTUTS2支持许多视图技术,该技术支持JSP和模板技术,例如Velocity and FreeMarker。

struts.xml的配置主要包括软件包,操作,结果,bean,常数等。

要使用过滤器调度器,您需要在Web.xml中配置过滤器调度器控制器。

此外,Struts2的另一种核心配置是Struts.properties属性文件。

动作需要继承Actionupport并实现执行方法。

4.1一般标签

如果Elseif,否则;迭代器;种类;日期; IL8N;包括;参数;财产;放;文本; URL。

4.2UI标签

双重选择; OptionTransFerselect; ActionError; ActionMessage; Fielderror。

4.3 Struts中的表达语言2

5.1国际支持,5.2 Struts2异常处理,5.3转换器,5.4数据验证

6.1:AbstractInterceptor,MethodFilterInterceptor

OK,本文到此结束,希望对大家有所帮助。

用户评论

半世晨晓。

我一直用 struts2, 前面版本好用,2.5 版本感觉有点慢啊,不知道是不是我配置的问题?大家用这个版本遇到什么问题了吗?

    有14位网友表示赞同!

寂莫

终于找到了最新的版本!之前一直在用的2.3,老版本的代码实在太臃肿了。希望2.5.33能改善一些性能瓶颈,让我再续青春几年!

    有5位网友表示赞同!

微信名字

这版本修复了许多安全漏洞,对企业级项目来说非常重要。以前因为担心安全问题一直不敢换新版本,现在终于可以安心使用了!

    有19位网友表示赞同!

醉枫染墨

虽然升级了版本,但是很多功能和框架使用方法并没有太大变化. 作为一个 struts2 老用户,上手还是比较容易的。

    有7位网友表示赞同!

风中摇曳着长发

struts 2 的开发模式还是简洁易懂,相比一些新的框架来说更轻量级。当然,现在它可能不能跟上最新的潮流,但对于中小型项目还是个不错的选择.

    有14位网友表示赞同!

_心抽搐到严重畸形っ°

感觉这个版本对前端整合还不太友好,我一直在用Angular,集成起来需要改动不少代码,有点麻烦

    有7位网友表示赞同!

单身i

我还是坚持 struts1 和 struts 2 的使用,虽然更新了但是框架的精髓并没有太大的改变。我对这些老的框架很熟悉,而且稳定可靠!

    有6位网友表示赞同!

虚伪了的真心

我一直在探索新的框架,比如Spring Boot。感觉struts 2.5.33还是挺有用的,但对于复杂的项目,也许需要考虑其他类型的框架了.

    有7位网友表示赞同!

凉凉凉”凉但是人心

更新之后测试了一下,发现有些第三方插件已经停止维护了。希望官方能尽快解决这个问题,否则可能会给开发带来很大麻烦.

    有9位网友表示赞同!

拽年很骚

总而言之我觉得 struts 2.5.33 是个不错的版本, 它保留了之前优秀的功能,同时进行了安全性和性能方面的优化. 但对于需要快速迭代的项目来说,也许可以选择更年轻的框架.

    有9位网友表示赞同!

无望的后半生

我一直在学习struts, 这个版本看起来比较稳定成熟,应该是有很多人都在用的吧?

    有19位网友表示赞同!

歇火

感觉 struts2 的社区越来越冷了,更新很少,官方支持也弱化了许多。以后不知道还能不能继续依赖它...

    有18位网友表示赞同!

执拗旧人

这版本有没有优化数据库连接池的操作啊?我项目的压力很大,每次启动项目都会耗费很多时间!

    有11位网友表示赞同!

陌然淺笑

对于初学者来说,struts2 还是有点难上手啊。网上教程更新也不及时,自己摸索也比较困难...

    有12位网友表示赞同!

陌上花

之前一直用Spring MVC, 想体验一下struts2, 这最新的版本应该功能还不错吧?

    有7位网友表示赞同!

墨染殇雪

struts 2.5.33 能否支持最新的JAVA 版本? 我想迁移到 JDK17 环境...

    有12位网友表示赞同!

何必锁我心

在使用 struts2 过程中,最头疼的是它的缓存机制。希望这个新版本能对缓存系统做一些改进。

    有10位网友表示赞同!

放肆丶小侽人

struts 2 的安全性一直是备受关注的问题,现在终于更新了修复安全漏洞的版本!对于我来说很关键哦!

    有20位网友表示赞同!

寒山远黛

这个版本优化了国际化支持吗?我的项目需要支持多语言, 这是个很大的挑战...

    有19位网友表示赞同!

标签: 公墓资讯
相关资讯
  • indexof【indexof()方法】

    1、基本类型:也叫做值类型,主要是值JAVA自带的8种数据类型即:byte、char、short、int、long、float、double、boolean

    2025-08-27 17:19:06 公墓资讯 
  • 女性试管婴儿的必备条件是什么?

    嗨,亲爱的小伙伴们,最近有没有听说过试管婴儿这个词?它是如今备受关注的生育方式哦!不过,要想成功进行试管婴儿,女性朋友们需要具备哪些条件呢?今天就让我们一起来揭秘一下吧!首先,我

    2025-08-27 17:13:01 公墓资讯 
  • 女性试管婴儿的全过程及其意义

    每个女性都梦想拥有一个属于自己的孩子,然而不孕不育的问题却让这个梦想变得遥远。如今,随着医学技术的发展,试管婴儿成为了解决不孕不育问题的有效方法。那么,什么是试管婴儿?它

    2025-08-27 17:08:01 公墓资讯 
  • 女性补卵巢的最佳选择是什么?

    嘿,各位小姐姐们,你们有没有听说过补充卵巢这个词?它是近年来备受热议的生活百科行业的话题哦。今天我们就来聊聊关于女性补充卵巢的最佳选择是什么。首先,让我们先来了解一下什

    2025-08-27 16:58:02 公墓资讯 
  • 女性血型有哪些?哪种血型最好?

    嗨,亲爱的小伙伴们!你们知道吗?每个人的血液中都有一个重要的成分,那就是血型。而女性的血型也是有着不同特点和影响的哦。今天,我就来给大家科普一下女性血型的相关知识。想知道

    2025-08-27 16:54:01 公墓资讯 
  • 女性菜花状疣早期症状图片怎么辨别?

    女性菜花状疣,这是一种让女性朋友们闻之色变的疾病。它不仅影响着女性的外貌,更可能给她们带来巨大的心理压力。那么,你是否知道什么是女性菜花状疣?它又是如何传播的?女性朋友们

    2025-08-27 16:43:01 公墓资讯