gpt4 book ai didi

java - 使用 XMLDecoder 读取文档文件是否安全?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:14 27 4
gpt4 key购买 nike

使用 XMLEncoder 将 Java Bean 序列化为 XML和 XMLDecoder似乎是一种非常巧妙的方法:来自许多来源的许多类都可以可靠地序列化,只需使用它们的公共(public)接口(interface)。在 API 引用的许多地方甚至建议使用这种方法进行序列化。但是 XML syntax用于此似乎很强大。是否有任何安全机制可以防止来自恶意文档的攻击?还是出于安全原因,应避免对不受信任的文档使用 XMLDecoder

最佳答案

XML 序列化 bean 的反序列化几乎可以导致 JVM 可以执行的任何操作。给你一个丑陋的例子,考虑下面的文档,它会写一个特定的文件而不问任何问题:

<?xml version="1.0" encoding="UTF-8" ?>
<java version="1.4.0" class="java.beans.XMLDecoder">
<object class="java.io.PrintWriter">
<string>/tmp/Hacked.txt</string>
<void method="println">
<string>You have been hacked!</string>
</void>
<void method="close"/>
</object>
</java>

这和一个方法大致相同

PrintWriter deserialize() {
PrintWriter obj = new PrintWriter("/tmp/Hacked.txt");
obj.println("You have been hacked!");
obj.close();
return obj;
}

出于这个原因,我强烈建议反对使用 XMLDecoder 从不受信任的来源读取数据。

要么将文档验证为定义明确且无害的 XML 语言子集,要么将您自己的格式与 等技术结合使用.或者在严格控制的环境中执行反序列化,安全管理器将不允许任何意外操作。

关于java - 使用 XMLDecoder 读取文档文件是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com