المعالجة الآمنة لنظم الإدخال والإخراج (Secure Input & Output Handling) هي تقنيات برمجية آمنة صُممت لمنع الثغرات الأمنية والإكسبلويت. [1]
معالجة الإدخال
معالجة الإدخال (Input processing) هي كيفية تعامل التطبيق أو الخادم أو النظام مع المدخلات من المستخدمين أو الزبائن أو الشبكات. معالجة المدخلات بأمان يكون مطلوب عادة لمنع نقاط الضعف مثل البرمجة بالحقن ونقاط الضعف، أو الثغرات الاخري.
تقييم الإدخال
تقييم الإدخال (Input Validation) أو تعقيمه Sanitizing هو التأكد من أن هذا الإدخال آمن ومناسب للاستعمال. [2]
الطريقة الأكثر أماناً لفعل ذلك هي إنهاء أي إدخال مشكوك فيها، عبر استخدام إستراتيجية القائمة البيضاء (White List) لتقرير ما إذا كانت العملية يجب أن تتوقف أم لا. ولكن هذا التوجه ليس مفضلاً دائماً من وجهة نظر عملية. وفي مجال أمان المعلومات، هناك إدخال موثوق به – وهو الإدخال الذي يثق به مطور النظام. وهناك أيضاً الرموز غير الآمنة، تلك التي يكون بها مطور النظام متأكداً أنها غير آمنة. بناء على ذلك، هناك طريقتان للتعامل مع الإدخال:
- القائمة البيضاء (White List): قائمة تحتوي على جميع رموز الإدخال الموثوق بها، وأغلب أحرف اللغة تدخل ضمن هذه القائمة.
- القائمة السوداء(Black List): قائمة تحتوي على رموز التي يمكن أن تؤذي النظام، والرموز الخاصة ($، &، #) عادة ما تدخل ضمن هذه القائمة.
محترفي الأمان المعلوماتي يفضلون القائمة البيضاء، لأن تلك السوداء يمكن أن تُعامل الإدخال السيئ على أنه صالح. ولكن بشكل عام فإن تطبيق القائمة البيضاء يكون صعباً.
إيقاف عملية الإدخال
تعتبر طريقة إيقاف عملية الإدخال (Terminate On Input) آمنة جداً، في حال ظهر رمز غير متوقع فإن عملية الإدخال تلغى. ولكن في حال لم يكن تطبيقها ممتازاًَ، فمن الممكن أن تتأثر بإحدى أنواع التخريب، مثل هجمات الحرمان من الخدمات التي يلجأ فيها المخرب إلى إغراق النظام بالكثير من رموز الإدخال، مما يدفع النظام لاستخدام وتوظيف الكثير من مصادره وعمليات معالجة كثيرة للتخلص منه.
تنقية الإدخال
فائدة استخدام تنقية الإدخال (Filter Input) هي للمستخدمين إذ أن طرق الحماية تعمل بطريقة أقل تداخلاً في عمل النظام. فعلى سبيل المثال إذا كان الرمز"*" ممنوعاً، فإن جملة مثل " أنا **** أحبك" ستصبح " أنا أحبك"، مما سيؤثر على ثقة المستخدم في النظام. وتمكن مشكلته في صعوبة تطبيقه، لأن "المنقي" في معظم التطبيقات يكون في مكان واحد في البرنامج، في حين يكمن الإدخال الخاطئ في مكان آخر.
المعالجة
بعض لغات البرمجة تحتوي على دعم لتطبيق المعالجة الآلية للأخطاء (Automatic Taint Checking)، فعندما يظهر ما يعتقد أنه إدخال خاطئ، يظهر هذا البرنامج خطأ ما في التطبيق.
الحلول الأخرى
هناك حلول أخرى تعتمد على لغة البرمجة المستخدمة، وأي نوع من البرمجة بالحقن الذي يتم التصدي له. وبالخصوص فإن منع الحقن المتعلق بلغة إس كيو إل يتم عبر ما يسمى الجمل المعدة (Prepared Statement) أو المتغيرات المانعة (Bind Variables).
انظر أيضاً
المراجع
- "Secure input and output handling". ipfs.io. مؤرشف من الأصل في 6 يوليو 201806 يوليو 2018.
- "Validating input". www.ibm.com (باللغة الإنجليزية). 2003-10-23. مؤرشف من الأصل في 20 يونيو 201906 يوليو 2018.