iteye_17320 2008-11-21 01:59
浏览 132
已采纳

Struts2中,能够限制Action的成员变量的注入吗? 

根据目前掌握的知识来看,Url请求中的参数,均可以通过Action的set方法被注入到Action中。



现在的问题是,Action中的一些成员变量不想被注入。

如上传文件时,存放服务器上传的路径是通过struts.xml中的param设定的,

同样,Action中也需要对应这个路径的set方法,如:public void setUploadDir(String uploadDir)

这样做的话,如果访问者通过在请求的Url增加一个uploadDir="e:\"参数,即可以将存放上传文件的路径修改,

从而可能对服务器任意路径上传文件。



由于刚接触Struts2不长时间,想问一下,可以限制通过Action中的set方法的注入吗?
问题补充:
根据目前掌握的知识来看,Url请求中的参数,均可以通过Action的set方法被注入到Action中。





现在的问题是,Action中的一些成员变量不想被注入。


如上传文件时,存放服务器上传的路径是通过struts.xml中的param设定的,


同样,Action中也需要对应这个路径的set方法,如:public void setUploadDir(String uploadDir)


这样做的话,如果访问者通过在请求的Url增加一个uploadDir="e:\"参数,即可以将存放上传文件的路径修改,


从而可能对服务器任意路径上传文件。





由于刚接触Struts2不长时间,想问一下,可以限制通过Action中的set方法的注入吗?



--------------------

象bohemia 样的回答后,struts.xml中的参数就没法注入到action中了啊。
问题补充:




引用
既然是系统内部,就可以通过其他途径获取这个值啊;

直接根据参数,读取到然后后台设置就可以了吧.




有什么好办法获得这个值吗?

如果是内部获得,private set方法也可以不用要了吧。

关键是好多上传文件的例子都是通过在struts.xml中设置param的value注入到action中,我感觉这个方法挺简单,就是有漏洞,所以才会提出问题。
问题补充:


看来,实在不行,我只能调一下staticParams和params的位置了。

希望还有更好的办法。
问题补充:
引用
怎么获取,有好多方法吧?



Web.xml配置;

Servlet读取;



另外,及时你的路径,也到固定的其他配置文件; 也可以的; 没必要一定要通过Struts.




你的意思,我明白了,就是不使用Struts.xml,而是通过在其他文件中设定,用其他方式取得。也就是传统的做法。



但是,这样的话,感觉还是不如直接注入方便,可惜,存在漏洞。

我目前能想到的方法就是把拦截器的位置换换。

不知道其他人有没有别的好方法。



先感谢您的耐心回答。

  • 写回答

5条回答 默认 最新

  • iteye_5908 2008-11-23 00:53
    关注

    这样更好点
    [code="java"]



    setUploadDir




    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog