يعتبر أمان قالب وإضافات ووردبريس من الأمور الهامة التي يجب على أي مطور ووردبريس الاهتمام بها عند تطوير منتجاته.
وللأسف يهتم بعض مطوري ووردبريس بتطوير الإضافات التي تؤدي الوظيفة المطلوبة أو القوالب التي تتميز بمظهر أنيق واحترافي متجاهلين في كثير من الأحيان اتباع القواعد والتدابير الأمنية في الكود الذي يكتبونه رغم أهميته البالغة في تأمين المواقع التي تستخدم هذه الإضافات والقوالب. .
بداية يجب أن تضع في الحسبان أنك في كل مرة تقوم فيها بتضمين حقول لإدخال البيانات في التعليمات البرمجية الخاصة بك فإن البيانات التي ستضمن في هذه الحقول قد تكون غير آمنة وتشكل مصدر تهديد للموقع.
على سبيل المثال يمكن للمخترق تنفيذ هجمات البرمجة النصية عبر المواقع XSS وحقن كود في السيرفر ثم تنفيذه في متصفح الزائر من خلال كتابة التعليق التالي في الحقل النصي الخاص بالتعليقات على المقالات
تسجيل الدخول لعرض الكود
هذا الكود البسيط سوف يتسبب في ظهور نافذة مثبقة مزعجة على شاشة المستخدم. لكن بالطبع المخترق الفعلي يمكنه أن يستغل حقل التعليق لإدخال أكواد أكثر خطورة ويقوم بسرقة المعلومات من متصفح المستخدم.
لذا من الضروري أن تقطع الطريق على أي شخص يحاول استغلال هذه الثغرات في الكود من خلال إدخال بياناته التخريبية التي تحاول اختراق مواقع الويب.
وفي مقال اليوم سأشرح 3 تقنيات برمجية هامة تساعدك على تأمين إدخال البيانات في قوالبك وإضافاتك بشكل كبير وتساهم في حمايتها من الاختراقات الأمنية وهي:
هل تبدو هذه المصطلحات مبهمة ولا علاقة لها بالبرمجة، لا تقلق في الفقرات التالية سأوضح لك كل مصطح منها بشكل مبسط يزيل الالتباس.
التحقق من صحة البيانات Validating
التحقق هو عملية فحص البيانات التي يكتبها المستخدم في حقول الإدخال قبل معالجة هذه البيانات أو تخزينها في قاعدة البيانات.
على سبيل المثال إذا كانت البيانات تدخل في حقل للبريد الإلكتروني يجب أن تقوم بعملية تحقق وتتأكد من أن القيمة المدخلة عبارة عن عنوان بريد إلكتروني، وإن كانت البيانات ستدخل في حقل رقمي مثل كمية المنتجات مثلاً تحقق أن القيمة المدخلة قيمة رقمية وإذا لم تكن كذلك قم بعرض رسالة خطأ للمستخدم.
يوفر ووردبريس العديد من الدوال الجاهزة التي تساعدك في عملية التحقق من صحة أنواع مختلفة من البيانات مثل
- is_email () تتحقق مما إذا كان عنوان البريد الإلكتروني يمثل بريد صالح أم لا.
- username_exists () تتحقق من إدخال اسم المستخدم.
- validate_file () تتحقق من أن مسار الملف المدخل هو مسار فعلي.
تعقيم البيانات Sanitizing
هو عملية تنظيف أوتطهير بيانات الإدخال التي يقوم المستخدم (أو واجهة برمجة تطبيقات أو خدمة الويب) بإدخالها للموقع. يجب أن تحرص كمطور على التأكد من أن هذه البيانات لا تحتوي على محارف أو رموز لا تريد تخزينها.
ومن أسهل الطرق لتعقيم البيانات هي استخدام دوال التعقيم المساعدة التي يتضمنها ووردبريس مثل:
- sanitize_text_field (): تنظف السلاسل النصية التي يقوم المستخدم بإدخالها أو حفظها في قاعدة البيانات
- sanitize_email (): تنظف كل الأحرف التي لا يفترض أن يتضمنها البريد الإلكتروني
- sanitize_file_name (): يزيل كل الأحرف الغير مرغوبة من اسم ملف
على سبيل المثال إذا كان لدينا حقل نصي باسم title يمثل عنوان المقال
تسجيل الدخول لعرض الكود
يمكن التحقق من أن البيانات المدخلة فيه هي سلسلة نصية من خلال الدالة sanitize_text_field() كما يلي
تسجيل الدخول لعرض الكود
دالة التنظيف sanitize_text_field تقوم هنا بالتحقق من أنك قد أدخلت محارف UTF-8 وتزيل الفراغات الزائدة وفواصل الأسطر وعلامات التبويب و أي وسوم ومحارف غير مرغوبة من النص المدخل.
بعدها يمكن حفظ عنوان البوست بأمان من خلال الكود التالي
تسجيل الدخول لعرض الكود
الهروب Escaping
هي طريقة لتأمين الخرج المعروض في الواجهة الأمامية للموقع وهي تستخدم لمنع أي سكربتات برمجية ضارة من التنفيذ الفعلي في متصفحك.
لنفترض أن لديك بالفعل كود ضار تمكن أحد المخربين من إدخاله في موقعك على الويب أو أن هناك إضافة ما فيها ثغرة أمنية وتمكن أحد المخربين من اختراقها وأدخل أكواد ضارة عن طريقها بحيلة ما، في هذه الحالة هروب البيانات إلى الشاشة قبل عرضها سيمنعها من إحداث مشكلة في الموقع. فالهروب يجرد البيانات غير المرغوب فيها مثل وسوم HTML المشوهة أو الوسوم البرمجية النصية قبل عرضها للمستخدم النهائي
على سبيل المثال في حال تمكن المهاجم بطريقة ما من إدخال السكربت التالي في التعليقات
تسجيل الدخول لعرض الكود
فسيعتقد المتصفح أن هذا كود HTML بسبب وجود العلامتين <> التي تستخدم في HTML. وإذا قمنا بالهروب أو بعبارة أخرى بالتخلص من هذين الرمزين وتحويلهما لعلامة أكبر وأصغر (الرمز & lt و الرمز& GT ) سيعرف المتصفح أن هذا ليس كود HTML فعلي ويعرض علامة <> بدلاً من ذلك.
يتضمن ووردبريس عدة دوال مضمنة للهروب لتأمين الخرج وكذلك لتوفير ميزة الترجمة في قالب ووردبريس على سبيل المثال:
esc_html (): تقوم بالتخلص من وسوم HTML
esc_attr (): تقوم بالتخلص من قيمة واصفات وسوم HTML
esc_url (): يتقوم بالتخلص من روابط النص التشعبي
على سبيل المثال في حال أدخل أدخل المخترق الكود التالي في أحد الحقول النصية المخصصة لإدخال رابط url في موقعك
تسجيل الدخول لعرض الكود
قبل عرض هذا الرابط في موقعك تأكد من الهروب من أي محارف غير شرعية فيه من خلال دالة الهروب esc_url كما يلي:
تسجيل الدخول لعرض الكود
كما أن من الشائع استخدام دوال الترجمة مثل __() و _e() بدلاً من الدالة echo لعرض البيانات في الموقع فهذه الدوال تقوم بتغليف دالة الترجمة داخل دالة escaping.
أي أن الكتابة التالية
تسجيل الدخول لعرض الكود
مكافئة للكتابة:
تسجيل الدخول لعرض الكود
كما أن الدوال التالية تتضمن وظائف الهروب والترجمة بنفس الوقت:
- esc_html__()
- esc_html_e()
- esc_html_x()
- esc_attr__()
- esc_attr_e()
- esc_attr_x()
كانت هذه بعض الطرق التي يمكنك أن تحمي بها قوالب وإضافات ووردبريس الخاصة بك من إساءة الاستخدام. ونصيحتي لأي مطور ووردبريس أن لا يهمل عملية التحقق من صحة جميع البيانات التي تدخل وتخرج من أي قالب أو إضافة يطورها فهذا يساعده بشكل كبير على توفير الحماية من معظم الهجمات الشائعة.