باعث السمات الأمان التعريفي

باعث السمات الأمان مصرحة للتجميعات ديناميكي وبها أنواع وأساليب يكافئ functionally الترميز في .permissionو .permissionsetتصريحات Ilasm.exe ( المجمع MSIL)، أو لتطبيق PermissionSetAttributeسمة في تعليمات برمجية المصدر ل Visual أساسى أو C#, أو C + +. ومع ذلك، فهناك اختلافات بين تنسيق بيانات التعريف المستخدمة لتخزين السمات emitted و التنسيق المستخدم لتخزين السمات المترجمة، استناداً إلى الإصدار.NET Framework.

تنسيق بيانات التعريف للأمان التعريفي

تم تقديم تنسيق جديد لبيانات تعريف الخاصة بتخزين السمات الأمان مصرحة في المراجعات 2005 إلى ECMA القياسية، بالإضافة إلى تنسيق XML الأصلي. للحصول على التفاصيل، راجع الوصف PermissionSetblob في DeclSecurityجدول (مقطع 22.11 في مراجعات 2005) في وثائق ECMA للقسم الثاني. تتوفر هذه الوثائق عبر الإنترنت; راجع ECMA C# Common Language Infrastructure Standards على MSDN و Standard ECMA-335 - Common Language Infrastructure (CLI) على موقع Ecma الدولي على ويب.

في الجميع إصدارات.NET Framework، يحتوي الأمان التعريفي تطبيق باستخدام الانعكاس الإرسال هو مخزنة في تنسيق بيانات التعريف القديم.

أذونات الأمان مصرحة في تعليمات برمجية المترجمة باستخدام Ilasm.exe ( المجمع MSIL)و اللغة compilers في الإصدار 2.0 من برنامج.NET Framework التي يتم تخزينها في تنسيق جديد.

أذونات الأمان مصرحة في تعليمات برمجية المترجمة باستخدام Ilasm.exe ( المجمع MSIL)ويتم تخزين compilers لغة في إصدارات.NET Framework 1.0 و 1.1 في التنسيق القديم.

باعث السمات الأمان التعريفي

يمكن أن تصدر السمات الأمان مصرحة للتجميعات، وظائف وأنواع المنشئات. لكافة أنواع الأعضاء الأخرى، يتم إصدار يحتوي الأمان التعريفي للأساليب الأساسية.

ملاحظة هامةهام

لا يمكن الإرسال بسمات الأمان مصرحة بإنشاء PermissionSetAttributeالكائنات وتطبيقها إلى تجميع حيوي أو نوع الأسلوب باستخدام SetCustomAttributeالأسلوب.

  • إلى الإرسال يحتوي الأمان التعريفي تجميع البيانات ديناميكية، قم بإنشاء منفصلة PermissionSetالكائنات التي تحتوي على الأذونات غير مطلوب واختياري والمرفوضة. تمرير هذه مجموعات الأذونات إلى التحميل الزائد المناسبة من DefineDynamicAssemblyأسلوب. في حالة عدم وجود الأذونات بتفويضه لفئة، حدد nullلهذه معلمة.

    ملاحظة هامةهام

    لا يتم استخدام أذونات مطلوبة واختياري المرفوضة إلا إذا تم تم الحفظ تجميع حيوي وإعادة تحميل في ذاكرة، أو إلا إذا كنت تستخدم التحميل الزائد من DefineDynamicAssemblyالطريقة التي تحدد دليل أذونات مطلوبة شكل جيد وتوفير Evidenceالكائن.لمزيد من المعلومات، راجع DefineDynamicAssembly.

  • إلى emit declarative الأمان for أنواع, وظائف, و constructors في a ديناميكي تجميع, إنشاء a PermissionSet كائن containing the أذونات for each SecurityAction you want إلى يطبق. يطبق the أذونات using the AddDeclarativeSecurity أسلوب of TypeBuilder for أنواع, the AddDeclarativeSecurity أسلوب of ConstructorBuilder for constructors, و the AddDeclarativeSecurity of MethodBuilder for وظائف.

    ملاحظةملاحظة

    يحتوي الأمان التعريفي هو غير معتمدة لأساليب حيوية المعرفة باستخدام DynamicMethodفئة.

  • إلى emit declarative الأمان for الجميع خصائص غير ذلك و أحداث, يطبق the desired إذن sets إلى the underlying أسلوب أو وظائف بواسطة using the AddDeclarativeSecurity أسلوب of MethodBuilder. For مثال, إلى emit declarative الأمان for a خاصية, يطبق declarative الأمان إلى the خاصية's get و set accessor وظائف.

During development of تعليمات برمجية that emits ديناميكي تجميعات, it هو recommended that you استخدم an التحميل الزائد of the DefineDynamicAssembly أسلوب that specifies دليل و أذونات, supply the دليل you want the ديناميكي تجميع إلى have, و تضمين SecurityPermissionFlag.SkipVerification في refusedPermissions. Refusing SkipVerification ensures that the MSIL هو verified. A limitation of this technique هو that it also causes SecurityException إلى be تم طرح when used مع تعليمات برمجية that demands كامل الثقة.

راجع أيضًا:

المرجع

DefineDynamicAssembly

ConstructorBuilder

TypeBuilder

MethodBuilder

PermissionSet