طلب الأذونات

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

في .NET Framework الإصدار 4، تم إزالة الدعم وقت التشغيل لطلبات الإذن RequestMinimum، و RequestOptional، و RequestRefuse.لا ينطبق هذا الموضوع على التعليمات البرمجية التي تعتمد على .NET Framework 4 أو أحدث.و للمزيد من المعلومات حول هذا والتغييرات الأخرى، راجع تغييرات الأمان في .NET Framework 4.

طلب الأذونات هو الطريقة التي تتيح إمكانية معرفة ما يجب تعليمات برمجية وقت التشغيل إلى ترك إلى القيام. طلب أذونات تجميع بوضع السمات (بناء جملة مصرحة) في نطاق التجميع من تعليمات برمجية الخاصة بك. عندما يتم إنشاء التجميع، يخزن برنامج التحويل البرمجي الأذونات المطلوبة في بيان التجميع. في وقت التحميل، تقوم بيئة وقت التشغيل بفحص طلبات الإذن، وتطبق قواعد سياسة الأمان لتحديد الأذونات التي تمنحها للتجميع. تؤثر الطلبات فقط على بيئة وقت التشغيل لترفض الأذونات للتعليمات البرمجية الخاصة بك و لا تؤثر أبداً على بيئة وقت التشغيل لمنح أذونات أكثر للتعليمات البرمجية الخاصة بك من ما تم منحه لها. لدى سياسة الإدارة المحلية دوماً التحكم النهائي على الحد الأقصى من الأذونات الممنوحة للتعليمات البرمجية الخاصة بك.

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

التعليمات البرمجية المخصصة للتواجد على جهاز كمبيوتر تعمل في My_Computer_Zone، والتي لها الثقة الكاملة بشكل افتراضي.تؤدي الثقة الكاملة للموافقة على كل طلبات الأذونات.تنجح مُطالبات الأذونات دوماً، حتى بالنسبة لأذونات الهوية التي لم يتم استيفاء شرط الهوية بها.إذا كان مقصوداً للتعليمات البرمجية الخاصة بك أن تشغّل فقط في My_Computer_Zone ، فلا قيمة لطلب الأذونات.إذا كان مقصوداً للتعليمات البرمجية الخاصة بك لتشغّل في أي من المناطق الأخرى، يوصى بالمطالبة بالأذونات.

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

في ‏‫‎.NET Framework 3.5 المزود بحزمة الخدمة Service Pack 1‬ والإصدارات الأحدث، تعمل التطبيقات في المشاركات على الإنترانت على وضع الثقة الكاملة بشكل افتراضي.إذا كان مقصوداً من التطبيق الخاص بك التشغيل من المشاركات، فسيتم تشغيله في وضع الثقة الكاملة مثل أي تطبيق موجود على جهاز الكمبيوتر الخاص بك.لمزيد من المعلومات، راجع تطبيقات إنترانت قيد التشغيل في ثقة كاملة.

على الرغم من أنه لا يجب للتعليمات البرمجية الخاصة بك المطالبة بالأذونات لكي يتم تشغيلها في وضع الثقة الجزئية، توجد أسباب هامة لجعل التعليمات البرمجية تطلب الأذونات دوماً:

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

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

  • يتيح طلب الأذونات للمسؤولين التعرف على الحد الأدنى من الأذونات التي يحتاجها التطبيق الخاص بك بحيث يقومون بضبط سياسة الأمان وفقاً لذلك. يمكنك تحديد الأذونات التي يتطلبها التطبيق الخاص بك من علامة التبويب Security (الأمان) في صفحة خصائص المشروع لمشروع Visual Studio. إذا لم يكن المسؤول على علم بهذه المعلومات، سيصعب إدارة التطبيق الخاص بك.

تقوم عملية طلب الأذونات بإعلام بيئة وقت التشغيل بالأذونات التي يحتاجها التطبيق الخاص بك ليعمل أو تلك التي لا يريدها بشكل خاص. على سبيل المثال، إذا كان التطبيق الخاص بك يكتب إلى القرص الثابت المحلي بدون استخدام تخزين منعزل، فيجب أن يكون لدى التطبيق الخاص بك FileIOPermission. إذا لم تطلب التعليمات البرمجية FileIOPermission و لا تسمح إعدادات الأمان المحلية للتطبيق الخاص بك بأن يحصل على هذا الإذن، يتم رفع استثناء أمان عند محاولة التطبيق لللكتابة للقرص. حتى و إن كان التطبيق يستطيع معالجة الاستثناء، فإنه لن يتم السماح له بالكتابة للقرص. قد يكون هذا السلوك مخيباً للمستخدمين إذا كان التطبيق الخاص بك أحد برامج تحرير النص الذي كانوا يستخدموه لفترة ممتدة من الوقت. أما ‏‫على الجانب الآخر، إذا كان التطبيق الخاص بك يطلب FileIOPermission و لا تسمح إعدادات الأمان المحلية للتطبيق الخاص بك الحصول على FileIOPermission، فسيطرح التطبيق الاستثناء عند بدء تشغيله و لن يواجه المستخدم مشكلة فقدان أي عمل تم. بالإضافة إلى ذلك، إذا كان التطبيق الخاص بك يطلب FileIOPermission و إذا كان التطبيق موثوقاً به يمكن للمسؤول ضبط سياسة الأمان للسماح له بالتنفيذ من مجلد مشاركة بعيد.

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

لطلب الأذونات، يجب أن تعرف أي الموارد و العمليات المحمية تستخدمها التعليمات البرمجية الخاصة بك، و عليك أيضاً معرفة أي الأذونات تحمي تلك الموارد والعمليات. وبالإضافة إلى ذلك، تحتاج إلى تعقّب أية موارد يتم الوصول إليها من قبل أية أساليب بأي مكتبة فئة يتم استدعاؤها بواسطو المكونات الخاصة بك. للحصول على قائمة أذونات الوصول إلى التعليمات البرمجية التي تم تضمينها في .NET Framework، راجع الموضوع الأذونات.

فيما يلي جدول يصف أنواع طلبات الأذونات.

طلب الإذن

الوصف

الحد الأدنى (RequestMinimum)

الأذونات التي تحتاجها التعليمات البرمجية الخاصة بك للتشغيل.

أذونات اختيارية (RequestOptional)

الأذونات التي يمكن للتعليمات البرمجية الخاصة بك استخدامها ولكن يمكن أن تعمل بشكل فعال بدونها. هذا الطلب يرفض ضمنيًا كافة الأذونات الأخرى الغير مطلوبة بشكل محدد.

الأذونات المرفوضة ( RequestRefuse)

الأذونات التي تريد التأكد من أنه لن يتم منحها أبداً للتعليمات البرمجية الخاصة بك، حتى وإن كان مسموحاً بها من قبل سياسة الأمان.

تقوم بتنفيذ أي من الطلبات أعلاه على مجموعات مضمّنة( طلب مجموعات أذونات مضمّنة).

تتضمن مجموعات الأذونات المضمّنة Nothing، و Execution و، FullTrust،و Internet، LocalIntranetو SkipVerification.

تقوم بتنفيذ أحد الطلبات أعلاه على مجموعات أذونات مرمّزة بتنسيق XML ( ‏‫طلب أذونات مرمَّزة بتنسيق XML‬ ).

تمثيل على هيئة XML (أي سلسلة نصية تحتوي على مجموعة أذونات مرمّزة بتنسيق XML أو موقع ملف XML يحتوي على مجموعة الأذونات المرمّزة) لمجموعة أذونات مرمّزة مطلوبة.

إذا قمت بتحديد الأذونات المطلوبة (باستخدام RequestMinimum) ، سيتم منح التعليمات البرمجية كل إذن مطلوب و يسمح به سياسة الأمان. سيتم السماح للتعليمات البرمجية بالتشغيل فقط في حالة منحها كافة الأذونات التي تتطلبها.

طلب الأذونات الاختيارية بدون طلب الأذونات المطلوبة أيضاً، يمكنه، في بعض الأحيان، تقييد الأذونات الممنوحة للتجميع بشكل جسيم. على سبيل المثال، افترض أن سياسة الأمان تمنح في العادة التجميع A الأذونات المقترنة بمجموعة الأذونات المسماة Everything. إذا طلب مُطور التجميع A الإذن A بشكل اختياري و لم يطلب أي أذونات مطلوبة أخرى، فسيتم منح التجميع A إما الإذن A (إذا كان مسموحاً به من قبل سياسة الأمان) أو لا شئ على الإطلاق.

راجع أيضًا:

المهام

كيفية القيام بما يلي: طلب إذن لمجموعة إذن مسماة

المرجع

FileIOPermission

SecurityAction.RequestMinimum

SecurityAction.RequestOptional

RequestRefuse

المبادئ

أمان الوصول إلى التعليمات البرمجية

أساسيات أمان الوصول إلى التعليمات البرمجية

ملف بيان التجميع

أذونات الأمان

طلب أذونات مرمَّزة بتنسيق XML

سياسة أمان .NET framework