【问题标题】:What problems could disabling Java bytecode verification cause?禁用 Java 字节码验证会导致哪些问题?
【发布时间】:2017-07-07 14:46:51
【问题描述】:

This answer 表示验证用于确保 Java 字节码“遵循 Java 语言安全规则”。

如果不执行此验证,将允许运行不安全的字节码。这会导致什么问题?

在哪些情况下可以接受禁用字节码验证?

【问题讨论】:

  • 崩溃、数据损坏、脏兮兮的感觉等。你应该反过来问:禁用验证有什么好处?
  • Here is an example 关闭验证时可能发生的情况。

标签: java jvm bytecode verification jvm-bytecode


【解决方案1】:

字节码验证确保代码无法执行诸如将 int 重新解释为指针和执行任意内存访问等操作。如果您尝试在 Java 沙箱中运行不受信任的代码,这将非常有用。

如果您完全信任您正在运行的所有代码,那么它的用处就会降低,因为在这种情况下它只会捕获意外错误。验证信息也有可能被输入优化器 - 我不确定,但优化器本质上必须验证代码才能进行任何有用的静态分析。

【讨论】:

    【解决方案2】:

    强烈建议不要在生产环境中使用“-Xverify:none”选项,因为它会禁用字节码验证并导致随机崩溃。请查看详细博客here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 2018-04-19
      相关资源
      最近更新 更多