次の方法で共有


C6248

警告 C6248: SECURITY_DESCRIPTOR の DACL を NULL に設定すると、保護されないオブジェクトとなります

この警告は、SECURITY_DESCRIPTOR の DACL フィールドを null に設定する呼び出しがあることを示します。オブジェクトのセキュリティ記述子に属する DACL が NULL に設定されると、null DACL が作成されます。null DACL の場合、要求するユーザー全員に完全なアクセス権限が与えられます。このオブジェクトについては、通常のセキュリティ チェックが実行されません。null DACL と空の DACL を混同しないでください。空の DACL は、正常に割り当てられ初期化された、ACE を含まない DACL です。空の 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
    }
}

セキュリティ記述子の作成方法を示す完全な例については、「Creating a Security Descriptor for a New Object in C++ (C++ による新しいオブジェクト用のセキュリティ記述子の作成)」を参照してください。詳細については、「Creating a DACL (DACL の作成)」を参照してください。