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

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

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

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

            SQL Bad Practices: Underspecified Identifier

            ABSTRACT

            不應在調用程序的權限程序包中使用沒有架構的標識符。

            EXPLANATION

            在調用程序的權限或 AUTHID CURRENT_USER 程序包中,標識符是根據當前用戶的架構首先解析的。如果該代碼的定義程序未明確表明標識符所屬的架構,這可能會導致意外的行為。

            例:下列代碼通過在權限表中查找用戶來檢查該用戶是否具有執行相應操作的權限。大多數用戶僅具有 SYS.PERMISSIONS 的讀取權限,且無法修改已定義的權限。


            CREATE or REPLACE FUNCTION check_permissions(
            p_name IN VARCHAR2, p_action IN VARCHAR2)
            RETURN BOOLEAN
            AUTHID CURRENT_USER
            IS
            r_count NUMBER;
            perm BOOLEAN := FALSE;
            BEGIN
            SELECT count(*) INTO r_count FROM PERMISSIONS
            WHERE name = p_name AND action = p_action;
            IF r_count > 0 THEN
            perm := TRUE;
            END IF;
            RETURN perm;
            END check_permissions


            如果調用 check_permissions 函數的用戶在其架構中定義了一個 PERMISSIONS 表,則該數據庫會解析該標識符以引用本地表。該用戶將具有對新表的寫入權限,并可以對其進行修改以獲得在其他情況下不可能擁有的權限。

            REFERENCES

            [1] Oracle Oracle Database PL/SQL Language Reference


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

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

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

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

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

                      亚洲欧美在线