2

バイトコードの拡張は、非常に興味深い Java 手法のように思えますが、少し「黒魔術」のようにも感じられます。それを使用することの欠点はありますか (ソース コードからは明らかではない機能がクラスに追加されるという事実以外に)?

セキュリティ、シリアル化などで問題が発生しますか?

4

2 に答える 2

3

それを使用することの欠点はありますか (ソース コードからは明らかではない機能がクラスに追加されるという事実以外に)?

1 つのことは、バイトコード操作によって作成されたバグは、診断がより困難になる可能性が高いということです。ソース コードの調査、およびソース レベルのデバッグは難しくなります。

セキュリティ上の問題を引き起こすか、

ベリファイアは (理論的には) 変更されたバイトコードがコア型システムを破壊し、JVM を破損するのを防ぐ必要があります。(そして言うまでもなく、信頼されていないコードにバイトコードの変更を許可するべきではありません。そのため、そのシナリオを軽視することができます。)しかし、これまで、一部の Java バイトコード検証は完全ではありませんでした。

さらに、バイトコードの変更:

  • ソースコードに基づいた適切なセキュリティ分析を行うことが難しくなります。
  • FindBugs などの静的分析ツールを使用することによる (限られた) セキュリティ上の利点が無効になる可能性があります。

連載など?

バイトコードの変更により、既存のシリアル化されたオブジェクトを変更されたクラスで読み取り可能にすることができます。たとえば、フィールドの追加と削除、クラスのスーパークラスとインターフェイスの変更などです。ただし、ソースコードを変更することで同じことができます。

于 2010-11-16T13:12:27.210 に答える
2

JVM はバイトコードを検証しますが、逸脱したバイトコードはセキュリティ上の脅威となる可能性があります。

于 2010-11-16T13:05:14.567 に答える