CA2109: Review visible event handlers

TypeName

ReviewVisibleEventHandlers

CheckId

ca2109

Category

Microsoft.الأمان

تعطيل تغيير

فصل

السبب

تم الكشف عن أسلوب معالجة حدث عامة أو محمية.

وصف القاعدة

يقدم أسلوب معالجة حدث مرئي خارجياً مشكلة تتطلب المراجعة.

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

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

  • هل لديك حدث معالج إجراء أية العمليات التي تكون خطرة أو exploitable، مثل يؤكد الأذونات أو إخماد مدارة إذن تعليمات برمجية؟

  • ما المقصود بالأمان threats إلى و من تعليمات برمجية الخاصة بك لأنه يمكن تشغيله في أي وقت بواسطة المتصلين فقط موثوق به بشدة تشغيل المكدس؟

كيف إلى الإصلاح انتهاكات

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

  • يمكن إجراء طريقة معالجة حدث غير العامة؟

  • يمكنك تحريك الجميع الوظائف الخطيرة من معالج حدث؟

  • في حالة طلب الالأمان هو المفروض، يمكن ترتيب هو أن accomplهوhed بطريقة غير ذلك؟

عند إلى منع التحذيرات

منع ظهور تحذير من هذه قاعدة فقط بعد مراجعة الأمان حذراً إلى تأكد من أن تعليمات برمجية لا يشكل خطرا على الأمان.

مثال

إظهار التعليمة البرمجية التالية أسلوب معالجة الأحداث التي يمكن إساءة استخدام بواسطة تعليمات برمجية ضارة.

using System;
using System.Security;
using System.Security.Permissions;

namespace EventSecLibrary
{
   public class HandleEvents
   {
      // Due to the access level and signature, a malicious caller could 
      // add this method to system-triggered events where all code in the call
      // stack has the demanded permission.

      // Also, the demand might be canceled by an asserted permission.

      [SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode=true)]

      // Violates rule: ReviewVisibleEventHandlers.
      public static void SomeActionHappened(Object sender, EventArgs e)
      {
         Console.WriteLine ("Do something dangerous from unmanaged code.");
      }

   }
}

راجع أيضًا:

المرجع

CodeAccessPermission.Demand

System.EventArgs

المبادئ

متطلبات الأمان