历史 | 登录     查看当前页的打印版本.  
问题详情 (XML | Word | Printable)

Key: EASYJWEB-9
类型: 问题 问题
状态: Resolved Resolved
解决: Fixed
优先级: Major Major
开发者: daxia
报告人: netgod
投票: 0
关注人: 0
操作

复制 问题
创建 子任务
如果你是 登录 你不能看到更多操作.
easyjweb

AbstractCmdAction中限制客户端使用cmd=doXX来调用指定方法的问题

创建: 21/十一月/07 09:45 上午   更新: 21/十一月/07 12:45 下午
模块: IOC容器
影响版本:
修复版本:

环境: easyjweb-1.0m1 jdk1.5


 描述  « Hide
      我们知道AbstractCmdAction中,可以从客户端传入cmd参数来实现对Action中指定方法的调用。也就是说假如Action中有一个名为public void test()方法,则可以直接使用xx.ejf?cmd=test来执行这个方法。为了支持灵活特性,同时规范可供客户端调用的方法书写规范。我们推荐不要把供客户端直接调用的方法如此命名,因此提供了一个以do开头的方法名支持。即xx.ejf?cmd=test调用的时候,首先检测有没有doTest方法,只有在没有doTest方法的时候,才去查找test方法。

    反过来说,我们也可以使用xx.ejf?cmd=doTest来实现直接调用本来我们希望使用xx.ejf?cmd=test调用的方法。在基本url拦截的权限配置中,这造成了一个安全隐患。也即我们一般只配置了针对xx.ejf?cmd=test这个url的拦截。但没有配置针对xx.ejf?cmd=doTest 这个url拦截。因此,为了消除这样的安全隐患,建议AbstractCmdAction不要支持xx.ejf?cmd=doTest形式的url。

 所有   备注   改动记录      排列顺序:
daxia - 21/十一月/07 12:45 下午
已经按该建议进行修改。包就是按常规当调用xx.ejf?cmd=doTest的时候,自动去查找doDoTest方法。如果找不到,则直接返回错误,不回再去找doTest这个方法。而对于xx.ejf?cmd=test这样的url,仍然会去尝试使用doTest或test方法来执行。