在struts2中如何实现转发和重定向?

2025-11-18 11:46:51

1、dispatcher:请求转发

这种方式是struts2中默认的转发类型,即内部请求转发,类似于forward的方式,请求转发到一个页面 (默认),不可以用这种方式转发到一个action

使用方式:

在Struts配置文件.xml中定义result节点,并将其type属性设置为dispatcher, 也可不设置,因为默认即是dispatcher

代码示例:

如下图所示

在struts2中如何实现转发和重定向?

2、redirect: 重定向到某个路径、视图。

在一个Action执行完毕后,希望执行另一个Action,有2种方式可供选择。一种是使用forward,另外一种是使用redirect。

redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。

代码示例如下图:

在struts2中如何实现转发和重定向?

3、redirectAction: 重定向到某个Action

redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。

代码示例如下图:

在struts2中如何实现转发和重定向?

1、在2013年6月底发布的Struts 2.3.15版本被曝出2个高危安全漏洞:

- 使用缩写的导航参数前缀时的远程代码执行漏洞, 用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的路径和参数,比如fdisk -f等,造成破环系统无法运行的目的。

- 使用缩写的重定向参数前缀时的开放式重定向漏洞, 用户可以构造如知名网站X宝的重定向连接,形如<a href="http://www.X宝.com/item00001.html?redirect:http://黑客/getyourPassword">打折新款</a>,引导用户点击后进入钓鱼网站,在界面上让其进行登陆用以获取用户的密码。

这些漏洞可使黑客取得网站服务器的“最高权限”,从而使企业服务器变成黑客手中的“肉鸡”。

在struts2中如何实现转发和重定向?

2、带来影响

据乌云平台漏洞报告,淘宝、京东、腾讯等大型互联网厂商均受此影响,而且漏洞利用代码已经被强化,可直接通过浏览器的提交对服务器进行任意操作并获取敏感内容。Struts漏洞影响巨大,受影响站点以电商、银行、门户、政府居多,而且一些自动化、傻瓜化的利用工具开始出现,填入地址可直接执行服务器命令,读取数据甚至直接关机等操作。

可以通过如下图所示工具进行自检。

在struts2中如何实现转发和重定向?

3、安全漏洞相关解决措施:

Apache Struts团队已发布了最新的Struts 2.3.15.1,修复了上述漏洞,建议采用Struts 2.0至Struts 2.3的网站开发者尽快升级至最新版。

4、下图是 Struts 框架漏洞的年鉴表

在struts2中如何实现转发和重定向?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢