2017-03-09 48 views
0

当我们用下面的代码如何呈现复选框没有隐藏字段中的Struts 2

<s:checkbox name="checkMe" fieldValue="true" label="Check Me for testing"/> 

它给下面的HTML表示(我指的是https://www.mkyong.com/struts2/struts-2-scheckbox-checkbox-example/)创建Struts2的复选框

<input type="checkbox" name="checkMe" value="true" id="xx_checkMe"/> 
<input type="hidden" id="__checkbox_xx_checkMe" name="__checkbox_checkMe" value="true"/> 
<label for="resultAction_checkMe" class="checkboxLabel">Check Me for testing</label> 

反正是有以消除创建隐藏的参数,因为它导致我的应用程序的安全漏洞

+1

隐藏参数是一个特性,它被Checkbox拦截器使用。你认为它创造了哪种安全漏洞? –

+0

@AndreaLigios MongoDB NOSQL注入。工具能够将特殊字符附加到该隐藏参数并传递到后端。 – Kiran

+0

这只是一个隐藏的输入。输入但隐藏。只需输入。您的*工具*可以为任何输入添加特殊字符。你需要清理你的输入,而不是删除隐藏的字段。 –

回答

1

它使用freemarker模板checkbox.ftl生成html输出。您可以从源归档复制并修改此模板,然后使用templatetemplateDir属性指向自定义模板。

或使用归档模板,但需要添加velocityvelocity-tools依赖关系。

<s:checkbox name="checkme" template="checkbox.vm" templateDir="template/archive"/> 
+0

谢谢你的帮助。 – Kiran

+0

@Kiran你也可以赞成接受的答案。 –