结构: Simple
Abstraction: Variant
状态: Draft
被利用可能性: unkown
A class has a cloneable() method that is not declared final, which allows an object to be created without calling the constructor. This can cause the object to be in an unexpected state.
Language: {'cwe_Name': 'Java', 'cwe_Prevalence': 'Undetermined'}
范围 | 影响 | 注释 |
---|---|---|
['Integrity', 'Other'] | ['Unexpected State', 'Varies by Context'] |
策略:
Make the cloneable() method final.
In this example, a public class "BankAccount" implements the cloneable() method which declares "Object clone(string accountnumber)":
bad Java
In the example below, a clone() method is defined without being declared final.
bad Java
映射的分类名 | ImNode ID | Fit | Mapped Node Name |
---|---|---|---|
7 Pernicious Kingdoms | Mobile Code: Object Hijack | ||
The CERT Oracle Secure Coding Standard for Java (2011) | OBJ07-J | Sensitive classes must not let themselves be copied | |
Software Fault Patterns | SFP28 | Unexpected access points |