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

    Obsolete

    ABSTRACT

    使用不推薦使用的或過時的函數可能表明存在忽略的代碼。

    EXPLANATION

    隨著編程語言的發展,一些函數有時會被棄用,原因如下:

    — 為了改進該編程語言。

    — 對操作的有效性、安全性有更深一步的了解。

    — 某些操作的管理規則發生了變化。

    在編程語中,函數會經常被刪除或由新的替代函數所取代,因為新的函數能以我們所期望的方式從多種角度執行相同的任務。

    示例:以下代碼使用了不被推薦的函數 getpw() 來檢驗明文密碼是否與用戶加密密碼相匹配。如果密碼是有效的,則函數將 result 設為1;如果無效,將其設為 0。


    ...
    getpw(uid, pwdline);
    for (i=0; i<3; i++){
    cryptpw=strtok(pwdline, ":");
    pwdline=0;
    }
    result = strcmp(crypt(plainpw,cryptpw), cryptpw) == 0;
    ...


    雖然該代碼通常能正確運行,但是從安全的角度來說,使用 getpw() 函數存在問題,因為它可能會使傳遞給第二個參數的緩沖區溢出。因此,由于這一漏洞,我們將使用 getpwuid() 函數來代替 getpw() 函數,雖然 getpwuid() 函數看上去與 getpw() 沒什么不同,但是它會返回一個指向靜態分配結構的指針,這將有助于減小安全上的風險。

    并非所有函數都會因為存在安全漏洞而被棄用或被取代。然而,出現被棄用的函數通常表示周圍代碼已經不起作用了,有可能處于不受維護的狀況。在過去很長一段時間內,人們并沒有將軟件安全放在首位,甚至都未曾考慮過。如果程序使用了不推薦的或過時的函數,在其附近就會潛伏著安全問題。

    REFERENCES

    [1] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 477


    Copyright 2013 Fortify Software - All rights reserved.
    (Generated from version 2013.1.1.0008 of the Fortify Secure Coding Rulepacks)
    desc.semantic.cpp.obsolete

    97av