إرشادات كتابة التعليمات البرمجية الآمنة
يوفر الأمان المستند إلى دليل و أمان الوصول إلى التعليمات البرمجية آليات فعالة جداً، وصريحة لتطبيق الأمان. يمكن لأغلب التعليمات البرمجية للتطبيق ببساطة استخدام البنية الأساسية المطبقة بواسطة .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 بالتفصيل كما توفر إرشادات حول استخدامه في التعليمات البرمجية الخاصة بك. |
|
يوضح هذا الموضوع أمان الوصول إلى التعليمات البرمجية في .NET Framework بالتفصيل كما يوفر إرشادات حول استخدامه في التعليمات البرمجية الخاصة بك. |
|
توضح الأمان المستند إلى الدور في .NET Framework بالتفصيل كما توفر إرشادات حول استخدامه في التعليمات البرمجية الخاصة بك. |