我正在使用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
我们也被告知应该使用JSE 2验证器。 我不确定它是什么?我们使用上面的验证器。 有人能告诉我什么是JSE 2 Validator?我们的验证是在JSE 2下进行的,如果没有,可以做什么来转换成JSE 2验证器。 还请分享一些JSE 2验证代码..
答案 0 :(得分:0)
包javax.xml.validation
说明
此包提供用于验证XML文档的API。验证是验证XML文档是指定XML模式的实例的过程。 XML模式定义其实例文档将表示的内容模型(也称为语法或词汇表)。
有许多流行的技术可用于创建XML模式。一些最受欢迎的包括:
W3C XML Schema(WXS) - 面向对象的XML模式语言。 WXS还提供了一种用于约束XML文档的字符数据的类型系统。 WXS由万维网联盟(W3C)维护,是W3C推荐标准(即已批准的W3C标准规范)。
RELAX NG(RNG) - 基于模式,用户友好的XML模式语言。 RNG模式也可以使用类型来约束XML字符数据。 RNG由结构化信息标准促进组织(OASIS)维护,并且是OASIS和ISO(国际标准化组织)标准。
以前版本的JAXP支持验证作为XML解析器的一项功能,由 SAXParser 或 DocumentBuilder 实例表示。
JAXP验证API将实例文档的验证与XML文档的解析分离。这有几个原因是有利的,其中一些原因是:
支持其他架构语言。从JDK 1.5开始,两个最流行的JAXP解析器实现(Crimson和Xerces)仅支持可用XML模式语言的子集。 Validation API提供了一种标准机制,通过该机制,应用程序可以利用支持其他模式语言的专门化验证库。
轻松运行时耦合XML实例和模式。指定用于JAXP解析器验证的模式的位置可能会令人困惑。 Validation API使此过程变得简单(参见下面的示例)。
用法示例。以下示例演示如何使用Validation API验证XML文档(为了便于阅读,未显示某些异常处理):
// parse an XML document into a DOM tree
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(new File("instance.xml"));
// create a SchemaFactory capable of understanding WXS schemas
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// load a WXS schema, represented by a Schema instance
Source schemaFile = new StreamSource(new File("mySchema.xsd"));
Schema schema = factory.newSchema(schemaFile);
// create a Validator instance, which can be used to validate an instance document
Validator validator = schema.newValidator();
// validate the DOM tree
try {
validator.validate(new DOMSource(document));
} catch (SAXException e) {
// instance document is invalid!
}
JAXP解析API已与Validation API集成。应用程序可以使用验证API创建Schema,并使用DocumentBuilderFactory.setSchema(Schema)和SAXParserFactory.setSchema(Schema)方法将其与DocumentBuilderFactory或SAXParserFactory实例相关联。您不应该同时设置模式并在解析器工厂上调用setValidating(true)。前一种技术将使解析器使用新的验证API;后者将导致解析器使用自己的内部验证工具