【发布时间】:2015-07-11 03:55:35
【问题描述】:
由于某些原因,我需要创建一个带有两个提交按钮的表单,它们将在提交后调用不同的操作。
我在Multiple Submit Buttons中找到了以下示例:
<s:form method="post" action="mySubmitAction">
<s:submit value="Submit"/>
<s:submit value="Clear" action="myClearAction"/>
</form>
由于我的项目使用的是 Struts 2.3.16.3,所以需要struts.mapper.action.prefix.enabled = true。
但是,在 struts 2.3.16.3 中重新启用它是否有任何风险? 会不会在 2.3.15.2 中出现同样的安全问题?
如果是,您介意提供一些替代方案来使多个提交按钮在单个表单上工作吗? if-else 解决方案不是首选。
【问题讨论】:
-
您可以将 javascript 用于多个按钮并将您的数据定向到类似的操作。与使用 struts.xml 相比,它的工作量更大。关于安全问题:您能否更具体地谈谈安全问题?
-
安全问题在https://struts.apache.org/docs/s2-018.html 中说明。在 2.3.15.3 之前的 Struts 2 中使用
action:前缀时,在某些情况下,这可以用来绕过安全约束。 -
要对多个按钮使用javascript,您的意思是触发onclick事件并动态更改动作名称吗?还是你的意思是用ajax来调用?
-
好的,那它应该在2.3.16.3修复,所以没有问题。
-
使用仅直接调用操作的脚本,或动态更改操作名称。这种风格的 JS 的好处主要是当你有表单验证时(或者如果你想使用 AJAX 风格的页面,例如将它与 Angular JS 结合使用)
标签: java security jsp struts2 ognl