معالجة آمنة لنظم الإدخال والإخراج (Secure Input & Output Handling) هي تقنيات برمجية آمنة صممت لمنع الثغرات الأمنية وطرق الاستغلال.
فهرس
|
معالجة الإدخال (Input Handling) هي كيفية تعامل [برنامج|التطبيق]] أو الخادم أو النظام مع الإدخال من المستخدمين أو الزبائن أو الشبكات. معالجة الإدخال الآمنة هي مطلوبة عادة لمنع نقاط الضعف مثل البرمجة بالحقن ونقاط الضعف الأخرى.
تقييم الإدخال (Input Validation) أو تعقيمه Sanitizing هو التأكد من أن هذا الإدخال آمن ومناسب للاستعمال. الطريقة الأكثر أماناً لفعل ذلك هي إنهاء أي إدخال مشكوك فيها، عبر استخدام إستراتيجية القائمة البيضاء (White List) لتقرير ما إذا كانت العملية يجب أن تتوقف أم لا. ولكن هذا التوجه ليس مفضلاً دائماً من وجهة نظر عملية. وفي مجال أمان المعلومات، هناك إدخال موثوق به – وهو الإدخال الذي يثق به مطور النظام. وهناك أيضاً الرموز غير الآمنة، تلك التي يكون بها مطور النظام متأكداً أنها غير آمنة. بناء على ذلك، هناك طريقتان للتعامل مع الإدخال:
محترفي الأمان المعلوماتي يفضلون القائمة البيضاء، لأن تلك السوداء ممكن أن تعامل الإدخال السيئ على أنه صالح. ولكن بشكل عام فإن تطبيق القائمة البيضاء يكون صعباً.
تعتبر طريقة إيقاف عملية الإدخال (Terminate On Input) آمنة جداً، في حال ظهر رمز غير متوقع فإن عملية الإدخال تلغى. ولكن في حال لم يكن تطبيقها ممتازاًَ، فمن الممكن أن تتأثر بإحدى أنواع التخريب، مثل تخريب إنكار الخدمة (Denial Of Service) التي يلجأ فيها المخرب إلى إغراق النظام بالكثير من رموز الإدخال، مما يدفع النظام لاستخدام وتوظيف الكثير من مصادره وعمليات معالجة صعبة للتخلص منه.
فائدة استخدام تنقية الإدخال (Filter Input) هي للمستخدمين إذ أن طرق الحماية تعمل بطريقة أقل تدخلية في عمل النظام. فعلى سبيل المثال إذا كان الرمز"*" ممنوعاً، فإن جملة مثل " أنا **** أحبك" ستصبح " أنا أحبك" .. مما سيؤثر على ثقة المستخدم في النظام. وتمكن مشكلته في صعوبة تطبيقه، لأن "المنقي" في معظم التطبيقات يكون في مكان واحد في البرنامج، في حين يكمن الإدخال الخاطئ في مكان آخر.
بعض لغات البرمجة تحتوي على دعم لتطبيق المعالجة الآلية للأخطاء (Automatic Taint Checking)، فعندما يظهر ما يعتقد أنه إدخال خاطئ، يظهر هذا البرنامج خطأ ما في التطبيق.
هناك حلول أخرى تعتمد على لغة البرمجة المستخدمة، وأي نوع من البرمجة بالحقن الذي يتم التصدي له. وبالخصوص فإن منع الحقن المتعلق بلغة Sql يتم عبر ما يسمى الجمل المعدة (Prepared Statement) أو المتغيرات المانعة (Bind Variables).