1

有没有办法在 Java 应用程序中嵌入 XML Schema 以使其无法更改(仅由应用程序使用)?

4

2 回答 2

1

您可以在程序中包含 XML Schema 文件的哈希,并在加载文件后验证它是否正确。

但是请注意,足智多谋的攻击者可能能够反编译您的程序并更改预期的哈希值以允许加载他的模式。取决于您的程序将在其中部署的环境。

于 2012-11-13T11:41:59.987 回答
1

对于您声明的要求级别,将您的模式和代码捆绑在一个 JAR 中就足够了。由于客户端无法更改内容(无意图),这可以满足您的需求。现在,这并不能阻止任何人解压存档并手动运行应用程序,但实际上,一旦它“在野外”出现,你无法阻止一个坚定的黑客对你的二进制文件做他们想做的事情。

您没有提到您是如何使用 XML 模式的,但是对于大多数绑定框架,可以在运行时针对模式验证编组/解组操作。阅读此 SO 帖子以获取一般 JAXB 示例:

如何在不编组的情况下验证 JAXB 2.0 中的模式?

于 2012-11-13T12:03:38.883 回答