当前位置: 首页 > 图文教程 > Java技术 > Web框架 > Web框架:Struts中的ActionForm 作为防火墙

Web框架
Web框架:addOptions and removeAllOptions
Web框架:Xfire与Spring集成那些事
Web框架:多个dwr.xml配置方法
Web框架:小编整理Hibernate 基本查詢
Web框架:DWR使用中的web.xml配置
Web框架:Struts2使用Spring插件完成整合
Web框架:小编叙Spring的事务管理
Web框架:Struts2国际化实现用户自行选择语言
Web框架:Struts2中加载资源文件的方式
Web框架:Struts2中整合图表工具JFreeChart的时间顺序图
Web框架:浅谈Struts2的内建校验器
Web框架:FreeMarker中的escape , noescape指令
Struts2的Visitor校验器
Struts2中的subset标签使用方法浅谈
Hibernate核心接口那些事
Spring中的依赖注入
Spring中的Inversion of Control 容器
浅析Spring中的单元测试
用StrutsTestCase测试Struts应用程序
浅谈Struts中html:options的使用

Web框架:Struts中的ActionForm 作为防火墙


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 144 ::
收藏到网摘: n/a

当请求提交时,ActionServlet 使用一个自动组装机制来从请求参数中设置请求的

ActionForm属性。这使得你可以通过控制哪个ActionForm 属性被暴露的方式来控制哪个

请求参数是可接受的。这也意味着如果你的ActionForm 的粗心设计,你可能失去控制哪个

参数可以接受的能力。ActionForm 一定不能包含看起来像是一个JavaBean 属性,但却不

能从HTTP 请求设置的属性方法。

设计ActionForm时你应该当心的是它的自动化组装机制。自动化机制自己是乐于根据请求

来设置ActionForm的公共属性的,而不管它们是否是来自于HTML表单。所以,如果你要

将一个bean重用为ActionFormbean上的一些公共属性以及它的超类就可从HTTP

求中直接设置。因为引用是可以被嵌套和链接的,某些作为成员属性的bean也被暴露,连

同其超类和一些成员属性。如果这些bean中的某些可以在系统状态中立即改变,那么一个

欺骗就可以影响到状态改变即便那不是一个有意的用法。

如果你从头创建一个ActionForm,并按其原本的意图,你就完全没有必要担心自动组装。

但某些开发人员喜欢将业务对象置于ActionForm中以便它们可以从请求中通过值来传递。

如果这样,某些看起来像JavaBean 属性的方法, 如果它们接受一个 String 值,就可能被从

HTTP 请求来调用。

一个例子是ActionServlet的上载缓冲区大小。在 Struts 1.0中,ActionServlet 被暴露为一

ActionForm成员属性。这意味着在 Struts 1.0, 你可以从HTTP请求中来调用

ActionServlet.setBufferSize。幸运的是,这并没什么影响,因为ActionServlet 仅在启动初

始化时使用这个值。然而,如果 servlet 是在运行时引用它,一个欺骗可以将它设置为0

来创建一个拒绝服务攻击。

使用ActionForm这样的可以影响系统状态的bean,或者一个ActionForm的一部分, 就像直

接传递输入字段到一个外壳脚本。这就如同不能区分在误导的人群中哪些是狂欢纵乐的聪

明人一样。

ActionForm 就像一个防火墙系统中的DMZ:它使你在数据被允许传递到应用的其它部分

之前必须检查数据。