有没有办法在Java应用程序中嵌入XML Schema,使其无法更改(仅供应用程序使用)?
答案 0 :(得分:1)
您可以在程序中包含XML Schema文件的哈希值,并在加载文件后验证它是否正确。
但请注意,资源丰富的攻击者可能能够反编译您的程序并更改预期的哈希值以允许加载其架构。取决于部署程序的环境。
答案 1 :(得分:1)
对于您声明的要求级别,在JAR中将架构和代码捆绑在一起就足够了。由于客户端无法更改内容(无意图),因此满足您的需求。现在,这并不能阻止任何人手动解压缩存档并运行应用程序,但实际上,一旦它出现在野外,你无法阻止一个坚定的黑客对你的二进制文件做什么。
您没有提到如何使用XML架构,但是对于大多数绑定框架,可以在运行时针对架构验证marshall / unmarshall操作。阅读此SO帖子以获取一般JAXB示例:
How to validate against schema in JAXB 2.0 without marshalling?