字节码增强似乎是一种非常有趣的Java技术,但它有一种“黑魔法”的感觉。使用它有什么缺点(除了将功能添加到源代码中不明显的类的事实之外)?
是否会导致安全性,序列化等问题?
答案 0 :(得分:3)
使用它是否有任何缺点(除了将功能添加到源代码中不明显的类的事实之外)?
有一件事是由字节码操作创建的错误可能更难以诊断。检查源代码和源代码级调试会更难。
是否会导致安全问题,
验证者应该(理论上)防止修改后的字节码破坏核心类型系统并破坏JVM。 (不言而喻,不应该允许不受信任的代码进行字节码修改,因此我们可以对这种情况进行折扣。)但是,在过去,一些Java字节码验证器并不是那么彻底。
此外,字节码修改:
序列化等?
字节码修改可以做一些事情,使现有的序列化对象可以被修改后的类读取;例如通过添加和删除字段,或通过更改类超类和接口。但是,您可以通过更改源代码来执行相同的操作。
答案 1 :(得分:2)
JVM验证bytecodes,但deviant bytecode可能代表安全威胁。