Overview
Non-final public fields should be avoided, if possible, as the code is easily tamperable.
Consequences
- Integrity: The object could potentially be tampered with.
- Confidentiality: The object could potentially allow the object to be read.
Exposure period
- Implementation: This flaw is a simple logic issue, introduced entirely at implementation time.
Platform
Required resources
Any
Severity
Medium
Likelihood of exploit
High
Avoidance and mitigation
- Implementation: Make any non-final field private.
Discussion
If a field is non-final and public, it can be changed once their value is set by any function which has access to the class which contains the field.
Examples
In C++:
public int password r = 45;
In Java:
public String r = new String("My Password");
Now this field is readable from any function and can be changed by any function.