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 (英文)。