结构: 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 |