هفوة برمجية غير متوقعة أدت إلى ضرر لموقع محترم !

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

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

 

في إحدى موقع وفي إحدى جزئياته، يقوم المدير برفع صور ابتسامات ويحفظها على مسار في القرص، ويقوم باضافة إختصار لها في قاعدة البيانات

وكان كود الرفع كالتالي

If fileuploads(i).FileName.ToLower().EndsWith("png") Or fileuploads(i).FileName.ToLower().EndsWith("gif") Or fileuploads(i).FileName.ToLower().EndsWith("jpg") Or fileuploads(i).FileName.ToLower().EndsWith("jpeg") Then

السطر هذا بشكل سريع يقوم بتحديد امتداد الملفات المرفوعة وقد حددتها بأربعة امتدادات فقط ( توجد طريقة أخرى لتحديد الامتدادات بشكل أسرع ) ، ومن ثم يتم حفظ هذه الملفات باسم فريد GUID

يدخل المدير فيرفع الملفات والأمور تعمل بدون مشاكل

قام مدير الموقع بتعيين مدير فرعي آخر وهو ما لم يكن بحسباني فقام هذا المدير برفع ملف اختراق وكان امتداده بالشكل التالي : xxxx.asp.png

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

بدوري أخبرته أنني لم أتوقع أن يرفع المدير ملف ليضر نفسه، وهو ما أقوم به غالبا، بل اـتغاظى كثيرا في قضية التحقق في المدير لأنه ببساطة المدير، هل سيضر موقعه.

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

ما أريد كتابته من ملاحظات لي وللجميع لتلافي هذه المشكلة مستقبلا هي:

1- ضرورة رفع ملفات الموقع Compiled وليست صفحات كود ، وبدون ذكر الأسباب سيكون الأمر أكثر أمانا.

2- لا تؤمن لمدير الموقع مرة أخرى، بل يجب عمل التحقق كما لو أنه مستخدم خارجي .

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

4- لا تفحص الامتداد من اسم اسم الملف بل افحص عبر contenttype

أسأل الله التوفيق

About the author

خليل سليم

Leave a Comment

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.