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

Web框架
Web框架:Struts标记库定制JSP标记
Web框架:简述Ajax技术的那些框架
Web框架:利用列表数据提高开发效率
Web框架:Struts2中声明式异常处理
Web框架:小议Spring的异常处理那点事
Web框架:详谈AOP概念
Web框架:小编浅谈Struts2的Ajax支持
Web框架:Ajax提供的div标签
Web框架:程序员之家七月份Web框架总结
Web框架:浅谈Spring Bean封装机制
Web框架:小编浅谈Struts配置文件
Web框架:小编谈Spring中的AOP 应用
Web框架:Spring的闪亮之处:事务管理
Web框架:浅谈iBATIS的动态映射
Web框架:Hibernate中五个接口那些事
Web框架:Hibernate的ORM与Hibernate的优点
Web框架:Struts2的OGNL
Web框架:Struts中的ActionForm 作为防火墙
Web框架:小编浅谈Struts2中使用JSON插件实现Ajax
Web框架:Aegis绑定那些事

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 140 ::
收藏到网摘: 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:它使你在数据被允许传递到应用的其它部分

之前必须检查数据。