Reino: Encapsulation

La encapsulación consiste en crear límites fuertes. En un explorador web esto puede suponer la seguridad de que tu codificación móvil no se vea comprometido por otro código móvil. En el servidor puede significar la diferenciación entre los datos validados y los que no lo están, entre los datos de un usuario y los de otro, o entre los diferentes usuarios, los datos que pueden ver y los que no.

Poor Style: Non-final Public Static Field

Abstract
Los campos estáticos públicos no finales se pueden cambiar por clases externas.
Explanation
Normalmente, no se desea dar a las clases externas acceso directo a sus campos miembros del objeto porque cualquier clase externa puede cambiar un campo público. Un buen diseño orientado al objeto usa la encapsulación para evitar que detalles de implementación, como campos de miembro, queden expuestos a otras clases. Además, si el sistema asume que no se puede cambiar este campo, entonces el código malintencionado podría ser capaz de cambiar negativamente el comportamiento del sistema.

Ejemplo 1: en el siguiente código, el campo ERROR_CODE se declara como público y estático, pero no como final:


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


En este caso, el código malintencionado podría ser capaz de cambiar este código de error y provocar que el programa se comporte de forma inesperada.
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