<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            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

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线