【发布时间】:2011-12-03 08:46:53
【问题描述】:
在我的应用程序中,我们在 freemarker 模板中使用 struts URL 标签,如下所示:
<s.url action="struts-action-name"/>
问题在于,它实际上不是将操作 url 附加到应用程序的根 url,而是将其附加到当前 URL。
假设我们点击了www.example.com/community/examples/xss187ba"><ScRiPt>alert(1)</ScRiPt>506d1768713/career_development,在该页面的 ftl 中,我们有一个这样的表单:
<form action="<s.url action="struts-action-name"/>">
渲染的 ftl 看起来像这样:
<form action="/community/examples/xss187ba"><ScRiPt>alert(1)</ScRiPt>506d1768713/career_development">
导致弹出警报的原因...有人处理过这个问题吗?这是 Struts 中的错误还是我们在这里做错了什么?
明显的解决方法是像这样使用 URL 标记:
<form action="<s.url value="/struts-action-name.jspa"/>">
另一方面,快速搜索显示该标签在项目中的 2500 次使用,重构所有这些并不是一件非常有趣/高效的工作:(
任何帮助、cmets 或建议将不胜感激。
-安德烈
【问题讨论】:
标签: security jakarta-ee struts2 xss freemarker