إرشادات كتابة التعليمات البرمجية الآمنة

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

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

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

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

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

التعليمات البرمجية المحايدة أمنياً

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

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

التعليمات البرمجية التي ليست مكون قابل لإعادة الاستخدام

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

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

التطبيق الخاص بتوفير برنامج تضمين لتعليمات برمجية أصلية

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

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

التعليمات البرمجية للمكتبة و التي تعرض الموارد المحمية

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

مواضيع ذات صلة

Title

الوصف

طلبات الإذن

توضح كيفية التفاعل مع نظام أمان .NET Framework باستخدام طلبات الأمان.

تأمين بيانات الحالة

توضح هذه المقالة كيفية حماية أعضاء المتغيرات الخاصة.

تأمين الوصول للأسلوب

توضح كيفية المساعدة على حماية الأساليب من أن يتم استدعاؤها بواسطة تعليمات برمجية موثوق بها جزئيًا.

تأمين التعليمات البرمجية لبرنامج التضمين

توضح مشاكل الأمان للتعليمات البرمجية التي تقوم بتضمين تعليمات برمجية أخرى.

الأمان المتعلق بحقول المصفوفة العامة و التي تكون للقراءة فقط

توضح مشكلات الامان للتعليمات البرمجية التي تستخدم مصفوفات عامة للقراءة فقط و التي توجد في مكتبات .NET Framework.

تأمين معالجة الاستثناء

توضح مشاكل الأمان لمعالجة الاستثناءات.

الأمان و الإدخال الخاص بالمستخدم

توضح مشاكل الأمان للتطبيقات التي تقبل إدخال من المستخدم.

اعتبارات الأمان و الاتصال عن بُعد

توضح مشاكل الأمان للتطبيقات التي تقوم بالاتصال عبر مجالات التطبيق.

الأمان و إنشاء التسلسل

توضح مشاكل الأمان والتي تتعلق بإجراء عملية تسلسل للكائنات.

الأمان و حالات التسابق (التعارض)

توضح كيفية تجنّب حالات التعارض في التعليمات البرمجية الخاصة بك.

الأمان و إنشاء التعليمات البرمجية بشكل آني.‬

توضح مشاكل الأمان للتطبيقات التي تقوم بإنشاء تعليمات برمجية حيوية.

الأذونات الخطيرة وإدارة السياسة

توضح الأذونات التي من المحتمل أن تسمح بتجاوز نظام الأمان.

الأمان و المسائل المتعلقة بعملية الإعداد و التثبيت

توضح الاعتبارات الخاصة باختبار وإعداد التطبيق الخاص بك.

كيفية القيام بما يلي: تشغيل تعليمات برمجية موثوق بها جزئياً في آلية لتحديد الصلاحيات‬‬

توضح كيفية تشغيل تطبيق موثوق به جزئيًا في بيئة أمنية مقيدة، مما يقوم بتقييد أذونات الوصول الممنوحة له.

أمان التطبيق ASP.NET على ويب

توضح الأمان في ASP.NET بالتفصيل كما توفر إرشادات حول استخدامه في التعليمات البرمجية الخاصة بك.

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

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

الأمان المستند إلى الدور

توضح الأمان المستند إلى الدور في .NET Framework بالتفصيل كما توفر إرشادات حول استخدامه في التعليمات البرمجية الخاصة بك.