【发布时间】:2016-06-14 19:16:09
【问题描述】:
我正在使用 Struts 2.3.16.3 并在我的代码中使用 struts 2 验证器。喜欢:
<validators>
<field name="name">
<field-validator type="required">
<message>
The name is required.
</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">29</param>
<param name="max">64</param>
<message>
Age must be in between 28 and 65
</message>
</field-validator>
</field>
</validators>
我发现我的代码容易受到 CVE-2016-0785 的攻击。 所以我可以选择http://struts.apache.org/docs/s2-029.html
- 在将传入参数的值重新分配给 某些 Struts 的标签属性。
- 不要在标签中使用 %{...} 语法 value 以外的属性,除非您有有效的用例。
- 或者升级到 Struts 2.3.20.3、Struts 2.3.24.3 或 Struts 2.3.28
我们还被告知应该使用 JSE 2 验证器。 我不确定它是什么?我们正在使用上面的验证器。 有人能告诉我什么是 JSE 2 验证器吗?我们的验证是否在 JSE 2 下,如果不是,可以做些什么来转换为 JSE 2 验证器。 还请分享一些 JSE 2 验证的代码..
【问题讨论】:
-
你不需要使用那个验证器,Struts2 有一个类似的validator type
regex。 -
相当于 JSE 2 验证器。无论如何,如果你想使用这个验证器,你需要将它集成到 Struts2 框架中,否则 Struts2 验证框架不会消耗它。
-
@RomanC 我们正在使用正则表达式:
contactPersonFaxNo ^[0-9 \-\+]*$ 这是否等同于 JSE 2 验证器?我们还必须为所有作为输入参数发送的字段提供验证器吗?可以给我发送 JSE 2 验证器示例吗?$errors.invalid,lb.catFaxNo -
@Hitesh 您从哪里获得有关此“JSE 2 验证器”的信息?
-
@Hitesh 您有多个选项可以避免该漏洞,它们已列出。您是否知道您的代码是否使用了易受攻击的功能?
标签: validation struts2