Java 字节码操作的危险性是什么(如果有的话)?

Java 字节码操作的危险性是什么(如果有的话)?,java,bytecode-manipulation,Java,Bytecode Manipulation,字节码增强似乎是一种非常有趣的Java技术,但它给人一种“黑魔法”的感觉。使用它是否有任何缺点(除了将功能添加到源代码中不明显的类之外) 它是否会导致安全性、序列化等问题?JVM会进行验证,但可能会造成安全威胁 使用它是否有任何缺点(除了将功能添加到源代码中不明显的类之外) 有一点是,字节码操作产生的bug可能更难诊断。对源代码的检查和源代码级的调试将更加困难 是否会导致安全问题 验证器(理论上)应该防止修改后的字节码破坏核心类型系统并损坏JVM。(不用说,不受信任的代码不应该被允许进行字节码修

字节码增强似乎是一种非常有趣的Java技术,但它给人一种“黑魔法”的感觉。使用它是否有任何缺点(除了将功能添加到源代码中不明显的类之外)

它是否会导致安全性、序列化等问题?

JVM会进行验证,但可能会造成安全威胁

使用它是否有任何缺点(除了将功能添加到源代码中不明显的类之外)

有一点是,字节码操作产生的bug可能更难诊断。对源代码的检查和源代码级的调试将更加困难

是否会导致安全问题

验证器(理论上)应该防止修改后的字节码破坏核心类型系统并损坏JVM。(不用说,不受信任的代码不应该被允许进行字节码修改,因此我们可以不考虑这种情况。)然而,在过去,一些Java字节码验证器不够彻底

此外,字节码修改:

  • 使基于源代码的安全性分析变得更加困难
  • 可能会抵消使用静态分析工具(如FindBugs)带来的(有限的)安全好处
序列化等等

字节码修改可以使已修改的类可读现有的序列化对象;e、 通过添加和删除字段,或者通过更改类、超类和接口。但是,您也可以通过更改源代码来执行相同的操作。

由于可用信息不断变化,“异常字节码”引用是一个搜索链接。