2017-07-07 2 views
0

This answer indique que la vérification est utilisée pour s'assurer que le bytecode Java "suit les règles du langage Java pour la sécurité".Quels problèmes pourraient empêcher la vérification du bytecode Java?

Si cette vérification n'a pas été effectuée, un code de sécurité dangereux pourrait être exécuté. Quels problèmes cela pourrait-il causer?

Y a-t-il des situations dans lesquelles la désactivation de la vérification du code de sécurité serait acceptable?

+1

Crash, la corruption de données, la sensation d'être sale, etc. Vous devriez demander l'inverse: quel avantage devrait désactiver la vérification ont? – Holger

+0

[Voici un exemple] (https://stackoverflow.com/questions/40321205/jvm-crash-problematic-frame-canonicalizerdo-if) de ce qui peut arriver lorsque vous désactivez la vérification. – apangin

Répondre

1

La vérification du bytecode assure que le code ne peut pas faire des choses comme réinterpréter un int comme un pointeur et faire des accès mémoire arbitraires. Ceci est particulièrement utile si vous essayez d'exécuter du code non fiable dans le sandbox Java.

Si vous faites totalement confiance à tout le code que vous utilisez, c'est moins utile, car il capture simplement les bogues accidentels dans ce cas. Il est également possible que les informations de vérification soient transmises à l'optimiseur - je ne suis pas sûr de cela, mais l'optimiseur doit essentiellement vérifier le code pour effectuer une analyse statique utile.

0

Il est fortement recommandé de ne pas utiliser les options "-Xverify: none" dans l'environnement de production, car cela désactive la vérification du code octet et provoque des plantages aléatoires. Se il vous plaît vérifier le blog détaillé here