<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    Missing SecurityManager Check: Cloneable

    ABSTRACT

    可克隆的類如果在其構造函數中執行此檢查,那么它還需要在其 clone() 方法中執行相同的檢查。

    EXPLANATION

    調用一個類的 clone() 方法時,不會調用該類中正在克隆的構造函數。因此,如果在可克隆類的構造函數中存在 SecurityManager 或 AccessController 檢查,則該類的克隆方法中也必須存在相同的檢查。否則,在克隆類時將繞過此安全檢查。

    例 1:對于下列代碼,構造函數中包含 SecurityManager 檢查,而 clone() 方法中不包含該檢查。


    public class BadSecurityCheck implements Cloneable {

    private int id;

    public BadSecurityCheck() {
    SecurityManager sm = System.getSecurityManager();
    if (sm != null) {
    sm.checkPermission(new BadPermission("BadSecurityCheck"));
    }
    id = 1;
    }

    public Object clone() throws CloneNotSupportedException {
    BadSecurityCheck bsm = (BadSecurityCheck)super.clone();
    return null;
    }
    }

    REFERENCES

    [1] "Secure Coding Guidelines for the Java Programming Language, version 2.0" Sun Microsystems, Inc. [Online].[Accessed:Aug. 30, 2007]. Sun Microsystems, Inc.

    [2] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 358

    [3] C. Lai Java Insecurity:Accounting for Subtleties That Can Compromise Code


    Copyright 2013 Fortify Software - All rights reserved.
    (Generated from version 2013.1.1.0008 of the Fortify Secure Coding Rulepacks)
    desc.structural.java.missing_securitymanager_check_cloneable

    97av