qq_31486065 2020-06-19 09:24 采纳率: 0%
浏览 2
已结题

服务器被攻击,导致配置正常得struts2文件无法使用正常得方法


如下所示,服务中使用得strtus2先被攻击,然后导致] Could not find action or result

Posted content type isn't multipart/form-data

 java.io.IOException: Posted content type isn't multipart/form-data

    at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)

    at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)

    at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:129)

    at com.airtalkee.util.CosMultiPartRequest.parse(CosMultiPartRequest.java:83)

    at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:84)

    at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:849)

    at org.apache.struts2.dispatcher.ng.PrepareOperations.wrapRequest(PrepareOperations.java:138)

    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)

    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)

    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

    at java.lang.Thread.run(Thread.java:662)

2018-08-10 14:16:15 [ http-4480-18:11622462 ] - [ WARN ] Could not find action or result: /station/logoutAction_logoutEn.action

 No result defined for action com.airtalkee.web.action.LogoutAction and result input - action - file:/root/http/station/webapps/station/WEB-INF/classes/struts.xml:82:67

    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)

    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)

    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)

    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInte



struts2配置如下:

<action name="logoutAction_*" class="logoutAction" method="{1}">

<!-- <interceptor-ref name="permissionStack"/>-->

<result name="toLogin">/login_aly.jsp</result>

<result name="toLogin2">/login_2.jsp</result>

<result name="toLoginZq">/login.jsp</result>

<result name="toLoginZq_PC">/login_PC.jsp</result>

<result name="toLoginFr">/login_fr.jsp</result>

<result name="toLoginEn">/login_en.jsp</result>

<result name="toLoginCCS">/login_ccs.jsp</result>

<result name="toLoginTw">/login_tw.jsp</result>

<result name="toLoginRu">/login_ru.jsp</result>

<result name="toLoginTr">/login_tr_tongli.jsp</result>       

<result name="imageUI">/image.jsp</result>

</action>


代码侧:

public String logoutEn() {

ActionContext.getContext().getSession()

.remove(SessionUtil.SESSION_USER);

return "toLoginEn";

}



一旦服务日志出现Posted content type isn't multipart/form-data,过个一两分钟就会出现Could not find action or result,重启服务后就能正常访问/station/logoutAction_logoutEn.action,

项目框架spring+struts2

struts2 版本:2.3.36

服务器:tomcat6

感觉和之前struts2报的漏洞(struts2 s2-045和struts2 s2-046)有关,但是我已经按照网上修复方案 升级了struts2 版本,但还是频繁出现上述问题。

请各位同学看一下,是否遇到类似情况,请注意,配置应该没有错,不然上线后就不能使用,这个问题是产生于服务正常使用一段时间后,出现这种情况,重启后就正常。




  • 写回答

8条回答 默认 最新

  • AZhen_0220 2020-06-19 11:18
    关注

    楼主你好,这个问题,我感觉还是代码不友好,或者xml文件中的问题,

    至于为什么说,服务可以正常启动,而且用一段时间也没有问题,按照我的经验可能是之前并没有访问到这个功能,所以没有报错。

    看下关于你自己的类的报错位置:

    首先先说一下No result defined for action xxx.xxx.xxx and result xxx这个错误


    action后跟的是你的action名称


    result是返回值错误,返回值错误有很多,比如说


    No result defined for action xxx.xxx.xxx and result input


        一般这个错误抛出的都是这五个错误,出现错误时,首先要看action后的那个xxx.action中的方法,是否存在两个或者两个以上的返回值,如果存在,抛出这个错误,一般只要在自己的action中为不同的返回值添加


      <result name="返回值名称">


      </result>


    就可以了


        如果你配置了相应的result,并与返回值一一对应的话,出现这个错误可能是因为你引了Struts2-Convention-Pluginx.xx.jar这个jar包


         这个包是实现Struts零配置功能的。他会扫描你的所有action、actions、struts 、struts包下含有execute方法的类。并根据其类名建立xxx.action映射。这时候当你访问XXX.action时系统会首先调用零配置方法配置的action,而这时候你又没有使用注解配置其result。当然就报找不到no result!


         处理方法:


              1.删除掉Struts2-Convention-Pluginx.xx.jar


              2.如果你的action类名是XXXAction 请不要在XML配置中设置其action name属性为XXX 


              3.使用零配置


    接下来再说一下No result defined for action xxx.xxx.xxx and result input这个错误


          出现这个错误的原因可能是


              1.因为你的返回值与action中与返回值name相同的属性类型不一致


              2.action中有重名属性


        如果以上方法不好用的话,可是试一试关闭Tomcat然后从Tomcat中移除自己的项目,然后在把项目重新填进去,重启Tomcat,因为这个错误也有可能是Tomcat缓存引起的!

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?