界: Encapsulation

カプセル化とは、強い境界線を引くことです。Web ブラウザの場合は、自分のモバイル コードが他のモバイル コードに悪用されないようにすることを意味します。サーバー上では、検証されたデータと検証されていないデータ、あるユーザーのデータと別のユーザーのデータ、またはユーザーが見ることを許可されたデータと許可されていないデータの区別などを意味する場合があります。

Poor Style: Non-final Public Static Field

Abstract
final ではない public static フィールドは、外部クラスにより変更される可能性があります。
Explanation
通常、公開フィールドは外部クラスにより変更される可能性があるため、オブジェクトメンバーフィールドに外部クラスが直接アクセスできないようにします。オブジェクト指向の良い設計例では、カプセル化を使用し、メンバーフィールドなどの実装の詳細が他のクラスに公開されないようにしています。さらに、システムでこのフィールドを変更不可にしている場合には、悪意あるコードにより、システムの動作が不正に変更される場合もあります。

例 1: 次のコードで、フィールド ERROR_CODE は public および static として定義されており、final としては定義されていません。


public class MyClass
{
public static int ERROR_CODE = 100;
//...
}


この場合、悪意あるコードにより、このエラーコードが変更され、プログラムの動作が不正になる可能性があります。
References
[1] Sun Microsystems, Inc. Secure Coding Guidelines for the Java Programming Language, version 2.0
[2] OBJ10-J. Do not use public static nonfinal fields CERT
[3] MUTABLE-9: Make public static fields final Oracle
[4] Standards Mapping - Common Weakness Enumeration CWE ID 493
desc.structural.java.poor_style_non-final_public_static_field