struts 拦截器bug?
正确的访问是localhost:8080/test/account- login!checkout.action?usermail=1a,这样可以访问到后台,但如果url是 localhost:8080/test/ ~account-login!checkout.action?usermail=1a,注意 多了一个~,或者把~换成@%+等都可以正确访问,请问这是怎么回事?"test"是项目名。 @Namespace("/") @Results( { @Result(name = CrudActionSupport.RELOAD, location = "/account-login.action", type = "redirect") } ) public class AccountLoginAction{ }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是在struts2升级后出现的问题。用的版本是struts2.3.15.2。你的意思是我随意写一个都可以让他访问到后台?那不是太扯了吗?
禁止访问某功能,把它暴露出来做什么,你做的页面不是为了给人用么
回复
没想暴露出来,只是用IBM 的Scan扫出来的一些似是而非的bug
你自己都说了,可以正确访问,都正确了你还想怎样。Struts本身容错机制确实多,很多你打错了或多打了一个字母也能使用的例子
不明觉二
跟踪了下源代码,发现是在DefaultActionMapper.java中的问题,protected String cleanupActionName(final String rawActionName) {}方法中,把非[a-zA-Z0-9._!/\-]*的字符全过滤掉了,导致输入一个特殊字符甚至是汉字+(正确的action路径)都可以访问到后台。