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