共用方式為


C6248

警告 C6248: 將 SECURITY_DESCRIPTOR 的 DACL 設為 NULL,將會產生不受保護的物件

這項警告會識別將 SECURITY_DESCRIPTOR 的 DACL 欄位設為 null 的呼叫。如果屬於物件之安全性描述元 (Security Descriptor) 的 DACL 設定為 NULL,則會建立 null DACL。null DACL 會將完整存取權限授與任何要求完整存取權限的使用者,而不會對物件執行一般安全性檢查。null DACL 不應該與空的 DACL 混淆。空的 DACL 是已適當配置並初始化的 DACL,它不包含任何 ACE。空的 DACL 不會授與它被指派之物件的存取權限。

具有 null DACL 的物件可能會讓惡意使用者更改其安全性描述元,因此沒有人可以存取物件。

即使每個人都需要存取物件,但物件應該受到保護,以便只有系統管理員可以更改其安全性。如果只有建立者需要存取物件,則不應該在物件上設定 DACL。系統將會選擇適當的預設值。

範例

因為將 null DACL 傳遞至 SetSecurityDescriptorDacl 函式,所以下列程式碼會產生這項警告:

#include <windows.h>

void f( PSECURITY_DESCRIPTOR pSecurityDescriptor )
{
  if (SetSecurityDescriptorDacl(pSecurityDescriptor,
                                TRUE,     // Dacl Present
                                NULL,     // NULL pointer to DACL    
                                FALSE))   // Defaulted

    {
      // Dacl is now applied to an object
    }
}

若要查看如何建立安全性描述元的完整範例,請參閱使用 C++ 建立新物件的安全性描述元 (英文)。如需詳細資訊,請參閱建立 DACL (英文)。