JAVA.FINAL.STATIC.VAR

非 final 静的変数の使用

脆弱性とリスク

JLS では、静的初期化子が使用されている場合でも、必ずしも変数が完全に初期化され、安全に公開されるわけではありません。

軽減と防止

静的変数を final として宣言することにより、安全に公開されるようにしてください。

脆弱コード例

コピー
package com.klocwork;

public class JAVA_FINAL_STATIC_VAR_POSITIVE {
    static String out = "hello world";

    public static void main(String args[]) {
        System.out.println(out);
    }
}

修正コード例

コピー
package com.klocwork;

public class JAVA_FINAL_STATIC_VAR_NEGATIVE {
    final static String out = "hello world";

    public static void main(String args[]) {
        System.out.println(out);
    }
}

外部参考資料