struts 拦截器bug?

发布于 2021-11-20 18:38:00 字数 406 浏览 744 评论 6

正确的访问是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

狼亦尘 2021-11-23 20:07:53

这是在struts2升级后出现的问题。用的版本是struts2.3.15.2。你的意思是我随意写一个都可以让他访问到后台?那不是太扯了吗?

因为看清所以看轻 2021-11-23 19:36:37

禁止访问某功能,把它暴露出来做什么,你做的页面不是为了给人用么

凯凯我们等你回来 2021-11-23 19:19:47

回复
没想暴露出来,只是用IBM 的Scan扫出来的一些似是而非的bug

情绪失控 2021-11-23 18:55:12

你自己都说了,可以正确访问,都正确了你还想怎样。Struts本身容错机制确实多,很多你打错了或多打了一个字母也能使用的例子

哑剧 2021-11-23 15:14:39

不明觉二

画骨成沙 2021-11-23 12:09:41

跟踪了下源代码,发现是在DefaultActionMapper.java中的问题,protected String cleanupActionName(final String rawActionName) {}方法中,把非[a-zA-Z0-9._!/\-]*的字符全过滤掉了,导致输入一个特殊字符甚至是汉字+(正确的action路径)都可以访问到后台。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文