当前位置: 首页 > news >正文

Struts1.x 跨站脚本(XSS)漏洞的解决

一. 演示XSS

   当访问一个不存在的网址时,例如 [url]http://localhost:8080/demo/noAction.do[/url] ,那么Struts处理后都会跳到提示“ Invalid path /noAtcion.do was requested ”的页面。

   但如果我们访问的网址是 [url]http://localhost:8080/demo/<script>alert[/url]('ok')</script>.do ,那么按道理,提示页面就会变成“ Invalid path /<script>alert('ok')</script>.do was requested ”。很明显,这将会执行 <script>alert('ok')</script> 这脚本,最终显示的内容就会把执行的脚本代码去掉,剩下 Invalid path /.do was requested 。漏洞就在这里了,如果那脚本是有害的,另有企图的,那么...

二. 解决方法
   尝试输入 [url]http://www.baidu.com/<script>alert[/url]('ok')</script>.html ,将会提示该页面不存在,而不会像上面的提示那样。
   解决方法就在这里:设置专门处理404等error的页面。这是Struts官方网站提供的一种方法之一。
   而官方网站的wiki( [url]http://wiki.apache.org/struts/StrutsXssVulnerability[/url] )还提供其他方法。

    1.升级到Struts 1.2.8版本
     Struts 1.2.8版本已经解决了这个XSS漏洞。而之前的版本都受到XSS漏洞的影响。

    2.配置"unknown" Struts Action
     如果客户端请求了struts-config.xml中没有定义的资源,Struts会丢出 404 Invalid path 的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息:
 
    <action
      name="error"
      path="/unknown" 
      unknown="true" 
      forward="/WEB-INF/pages/error.jsp"/>
 

   如果RequestProcessor遇到没有定义的Action请求,则会交由匿名的ActionMapping来处理。


   当然别忘了最简单的方法: 设置并指定自定义的404/Not found处理网页。


本文转自 Icansoft 51CTO博客,原文链接: 

http://blog.51cto.com/android/113584

相关文章:

  • 综合应用WPF/WCF/WF/LINQ之三十:代码生成器之DBMLToDAL
  • Cocos Creator 音频API控制调频
  • OpenGL ES 之对各种坐标系统的记录理解
  • Git 仓库结构 (二)***
  • 使用WCF Test Client(WcfTestClient.exe) 来测试WCF
  • Internet Connectivity Evaluation Tool
  • CCF201412-2 Z字形扫描 java(100分)
  • [SoftGrid 系列] Microsoft SoftGrid Server 安装篇
  • 只有rman的备份文件恢复过程
  • Perl脚本学习笔记(一)
  • func 安装之艰辛历程
  • SoapUI实践:自动化测试、压力测试、持续集成
  • linux命令之wget
  • 关于同一线程两次调用EnterCriticalSection的测试
  • 顶级MySQL主从复制企业应用
  • overflow: hidden IE7无效
  • PhantomJS 安装
  • Spring Boot快速入门(一):Hello Spring Boot
  • Web Storage相关
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 三分钟教你同步 Visual Studio Code 设置
  • 提醒我喝水chrome插件开发指南
  • 我这样减少了26.5M Java内存!
  • FaaS 的简单实践
  • Semaphore
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (Forward) Music Player: From UI Proposal to Code
  • (Java数据结构)ArrayList
  • (Python第六天)文件处理
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (力扣)循环队列的实现与详解(C语言)
  • (转)Linux下编译安装log4cxx
  • (转)Scala的“=”符号简介
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • **PHP分步表单提交思路(分页表单提交)
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 回调、接口回调、 委托
  • .Net 应用中使用dot trace进行性能诊断
  • .net 怎么循环得到数组里的值_关于js数组
  • .NetCore部署微服务(二)
  • .NET文档生成工具ADB使用图文教程
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • [ C++ ] STL---string类的模拟实现
  • [BZOJ1053][HAOI2007]反素数ant
  • [C++随笔录] 红黑树
  • [hdu4622 Reincarnation]后缀数组
  • [java后端研发]——文件上传与下载(2种方式)
  • [java刷算法]牛客—剑指offer链表有环的入口、反转链表、合并排序链表
  • [JS]变量