أفضل 5 طرق لحل ثغرة WordPress

نشرت: 2020-02-01

في الوقت الحالي ، يغطي WordPress 33٪ من الويب. هذا يعني أن عددًا كبيرًا من المستخدمين يستخدمونه مما سيجذب بالتأكيد المزيد من المهاجمين والمتسللين. نتيجة لذلك ، هناك المزيد من التهديدات والهجمات مثل هجوم حقن SQL وهجوم إعادة التوجيه وهجوم CSRF وهجوم XSS وما إلى ذلك مما يتسبب في حدوث ثغرة أمنية في WordPress. لهذا السبب ، هذا لا يعني أن WordPress ليس آمنًا. يجب أن نركز على تعقيم البيانات ، والتحقق من صحة البيانات ، وهروب البيانات ، واستخدام والتحقق من إعادة التوجيه الآمن ، وقدرات المستخدم ، وما إلى ذلك لجعل WordPress آمنًا. ومع ذلك ، فإن نقاط الضعف في WordPress تجعلها غير آمنة. لذا ، دعنا نناقش مشكلات أمان WordPress.

تأتي نقاط الضعف في WordPress أيضًا. ولكن كيف؟

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

حتى إذا لم تكن مطور WordPress ، فنحن نشجعك على قراءة المنشور لأنك ستتمكن من معرفة الهجمات الرئيسية التي تجذب المتسللين لمهاجمة موقعك. وستكون أيضًا قادرًا على فهم كيفية معرفة المكونات الإضافية والسمات المشفرة بشكل سيئ في WordPress. إذا كنت تدير متجرًا عبر الإنترنت ، فمن المفيد لك أن تقرر أفضل المكونات الإضافية والسمات WooCommerce الآمنة.

محتويات
1 ثغرات أمنية في WordPress
2 التهديدات والهجمات
2.1 ثغرة WordPress - هجوم حقن SQL
2.2 تعقيم البيانات
2.2.1 مثال على تعقيم البيانات:
2.3 ثغرة WordPress - هجوم XSS
2.3.1 مثال على هجوم XSS:
2.4 التحقق من صحة البيانات
2.4.1 مثال التحقق من صحة البيانات:
2.5 هروب البيانات
2.5.1 مثال على هروب البيانات:
2.6 ثغرة WordPress - هجوم CSRF
2.7 باستخدام Nonce
2.8 التحقق من Nonce
2.9 ثغرة WordPress - هجوم إعادة التوجيه
2.10 إعادة التوجيه الآمن
2.11 ضعف قدرات المستخدم
2.12 دائما العودة أو الخروج في وورد

ثغرات أمنية في WordPress

من أين تأتي الرموز الضعيفة؟

في البداية ، يجب أن يكون لدينا فهم جيد لمكان وجود مشكلات أمان WordPress . يتكون WordPress من كود WordPress الأساسي ، والسمات ، والمكونات الإضافية التي تشمل Php و Html و javascript وأكواد أخرى.

يقوم مجتمع المصادر المفتوحة بفحص كود WordPress الأساسي. هناك عدد كبير من الأشخاص الذين يبلغون عن الخطأ ويصلحون نقاط الضعف وينسبون الفضل إليه. يمكن استغلال الثغرة الأمنية في WordPress من خلال هجوم حقن SQL وهجوم CSRF وهجوم XSS وهجوم إعادة التوجيه وتقنيات أخرى مماثلة. لذا ، فإن ثغرة WordPress من التطوير الأساسي ليست كثيرة.

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

من ناحية أخرى ، تحتوي مكونات WordPress الإضافية على ميزات وسلوكيات معقدة. كما أن التفاعل مرتفع مع المستخدمين وقواعد البيانات. يحتوي الموقع على عدد كبير من المكونات الإضافية التي تحتوي على ميزات خارجية. نتيجة لذلك ، قد يجلبون عددًا كبيرًا من الثغرات الأمنية إلى الموقع. تقدم المكونات الإضافية نقاط ضعف رئيسية في WordPress.

ثغرة WordPress - التهديدات والهجمات
ثغرة WordPress - WPscan.org

وفقًا لموقع wpscan.org ، تأتي 11٪ من الثغرات من السمات بينما تأتي 37٪ من الثغرات من تطوير WordPress Core. وبنفس الطريقة ، تأتي نسبة 52٪ الباقية من المكونات الإضافية. أفترض أنك تعرف بالفعل ما هو مكون WordPress الإضافي

التهديدات والهجمات

إذا كنت من مستخدمي قوالب ووردبريس أو مطور الإضافات ، فيجب أن تكون لديك معرفة جيدة بالتهديدات والهجمات لجعل الكود الخاص بك آمنًا وتقليل ضعف WordPress.

التهديدات والهجمات - حقن SQL - XSS - CSRF - إعادة التوجيه
التهديدات والهجمات

هناك العديد من الهجمات مثل هجوم حقن SQL وهجوم XSS وهجوم إعادة التوجيه وهجوم CSRF والتي يمكن منعها عن طريق تطهير البيانات والتحقق من صحة البيانات وهروب البيانات واستخدام والتحقق من إعادة التوجيه الآمن وإمكانيات المستخدم وما إلى ذلك.

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

ثغرة WordPress - هجوم حقن SQL

في محاولة لاسترداد البيانات الهامة والحساسة ، يقوم هجوم حقن SQL بحقن كود SQL ضار في قاعدة بيانات WP. يستهدفون مواقع WordPress التي تستخدم قاعدة بيانات SQL - MySQL و Oracle و SQL Server وما إلى ذلك.

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

يمكننا أن نأخذ مثالاً على الكوميديا ​​الشهيرة "Bobby Tables".

طاولات بوبي شهيرة كوميدي - تهديد وهجوم
طاولات بوبي الشهيرة كوميدي

في هذا الفيلم الهزلي ، تحتفظ سيدة باسم ابنها "روبرت") ؛ إسقاط الطلاب الجدول. - ')' ؛ باستخدام أمر SQL والذي عند الدخول في قاعدة البيانات سيحذف جدول الطالب بالكامل في المدرسة إذا لم يتم تطهير الاسم.

لذلك لتجنب حقن SQL ، يجب علينا تعقيم بيانات إدخال المستخدم.

دعونا نناقش تعقيم البيانات بالتفصيل.

تعقيم البيانات

التعقيم يعني تأمين المدخلات وتنظيف مدخلات المستخدم. تزيل هذه العملية النص أو أحرف UTF-8 أو التعليمات البرمجية غير الصالحة من الإدخال لتقليل الضعف في WordPress.

يقوم بتحويل أحرف HTML المحددة إلى كيانات ، ويزيل كل العلامات. كما أنه يزيل فواصل الأسطر ، وعلامات التبويب ، والمسافات البيضاء الزائدة ، والثمانيات الشريطية التي تعد سببًا لمشاكل الأمان الرئيسية في WordPress.

هناك الكثير من الوظائف المضمنة في WordPress لتعقيم البيانات. قليل منهم في القائمة أدناه:

  1. sanitize_email (): يزيل كل الأحرف التي يجب ألا تكون في البريد الإلكتروني
  2. sanitize_text_field (): يطهر سلسلة (من إدخال المستخدم / قاعدة البيانات)
  3. sanitize_file_name (): يزيل الأحرف (من اسم ملف)
  4. sanitize_key (): قم بإزالة المفاتيح باستثناء الأحرف الأبجدية الرقمية الصغيرة والشرطات والشرطات السفلية.

مثال على تعقيم البيانات:

 $title=sanitize_text_field($_POST['title']); update_post_meta($post->ID,'title',$title);

هنا ، في البداية ، نقوم بتعقيم العنوان. بعد التطهير ، نقوم بتحديث قيمة العنوان في قاعدة بيانات wp.

 $Name= ' Robert'); DROP TABLE Students; --') '; INSERT INTO Students VALUES ('$Name'); INSERT INTO Students VALUES ('Robert'); DROP TABLE Students; --')

هنا في أمر SQL أعلاه ، يحتوي الاسم على سلسلة وأحرف وكيانات خاصة مدرجة في جدول الطالب ، الاسم "روبرت") ؛ يؤدي هذا إلى إغلاق أمر إدراج SQL وتشغيل أمر آخر مع نصف اسم طلاب الجدول DROP TABLE ؛ - ')' ؛ ويقوم طلاب الجدول المسقط هذا بحذف جميع سجلات الطلاب في قاعدة البيانات.

لذلك إذا تم إجراء التعقيم قبل إدخال القيمة في قاعدة البيانات ، فلن تفقد جدول قاعدة بيانات الطلاب بالكامل.

دعنا نرى المثال أدناه للقيام بالتطهير.


 $Name=sanitize_text_field("' Robert'); DROP TABLE Students; --') ';"); $sql = $wpdb->prepare("INSERT INTO Students VALUES ($Name)"); /* this will only insert 'Robert DROP TABLE Students' */ $wpdb->query($sql);

هنا في المثال أعلاه ، أزال التعقيم الكيانات والحرف الإضافي من الاسم ويسمح فقط للسلسلة بإدراجها في قاعدة البيانات. بهذه الطريقة ، يمكننا إدخال البيانات بأمان ونكون في مأمن من حقن SQL.

اتبع هذا الرابط لمعرفة المزيد حول تأمين الإدخال .

ثغرة WordPress - هجوم XSS

يقوم هجوم البرمجة النصية عبر المواقع (XSS) بحقن كود جافا سكريبت بلغة البرمجة النصية الضعيفة لسرقة بيانات مماثلة للمستخدم الآخر مثل ملفات تعريف الارتباط ورموز الجلسة وغيرها من المعلومات. إذا كانت لدينا معلومات ملفات تعريف الارتباط ، فيمكننا الاتصال تلقائيًا. تأتي مشكلات الأمان في WordPress مع ملفات تعريف الارتباط المسروقة ، حيث يمكننا بسهولة تسجيل الدخول بهويات أخرى.
يعمل على المتصفح. سيتأثر ملايين الأشخاص الذين يتصفحون الموقع بهذا الهجوم. ولا شك أن هذا الهجوم من أخطر الهجمات.

مثال على هجوم XSS:

 <script <script type=”text/javascript”>
var hacker ='../hacker.php? cookie_data=' +escape(document.cookie);
</script>
</script>

هنا في مثال هجوم XSS هذا ، تهرب ملفات تعريف الارتباط ويتم إرسالها إلى "cookie_data" متغير البرنامج النصي الخاص بـ hacker.php

إذا قام المهاجم بحقن هذا البرنامج النصي في رمز موقع الويب ، فسيتم تنفيذه في متصفح المستخدم وسيتم إرسال ملفات تعريف الارتباط إلى المهاجم وهي مشكلة خطيرة. لذا لتجنب ذلك نحتاج إلى التحقق من صحة ذلك. التحقق من صحة وتعقيم جميع بيانات إدخال المستخدم وإفلات بيانات الإخراج.

دعونا نناقش بالتفصيل أدناه.

تأكيد صحة البيانات

التحقق من صحة هو فحص مدخلات المستخدم. يتم ذلك للتحقق مما إذا كان المستخدم قد أدخل قيمة صالحة أم لا.
هناك ثلاث طرق للتحقق من صحة البيانات وهي وظائف PHP مدمجة ووظائف WordPress الأساسية ووظائف مخصصة. لا تهرب أبدًا من هذا لتجنب ثغرة أمنية في WordPress. قليل منهم في القائمة أدناه:

  1. isset () / blank (): تحقق مما إذا كان المتغير موجودًا أم لا
  2. is_email (): تحقق مما إذا كانت البيانات المقدمة بتنسيق بريد إلكتروني أم لا
  3. is_serialized (): تحقق مما إذا كانت القيمة سلسلة أم لا

مثال على التحقق من صحة البيانات:

 $number='12323'; if(intval(number)){ //do your things } else{ esc_html_e('Enter valid number','text-domain'); }

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

اتبع هذا الارتباط لمعرفة المزيد حول التحقق من صحة البيانات

هروب البيانات

الهروب هو تأمين الإخراج. إنها عملية إزالة البيانات غير المرغوب فيها ، مثل علامات HTML المشوهة أو علامات البرنامج النصي. لا يحول Escaping أحرف HTML الخاصة إلى كيانات HTML فحسب ، بل يعرض أيضًا ، بدلاً من التنفيذ. يتم ذلك لمنع هجوم XSS وأيضًا للتأكد من أن البيانات تعرض الطريقة التي يتوقعها المستخدم.
يوفر WordPress بعض الوظائف المساعدة. يتم استخدامها في معظم الحالات. البعض منهم:

  1. esc_html (): لتخطي الأحرف الخاصة بـ HTML
  2. esc_attr (): للتخلص من قيمة سمات علامات HTML
  3. esc_url (): يهرب من سمات مرجع النص التشعبي

مثال على هروب البيانات:

 $url = "javascript : alert ('Hello')";
<a href= "<?php echo esc_url ($url) ;?>"> Text </a> href= "<?php echo esc_url ($url) ;?>"> Text </a>

في المثال أعلاه ، أدخل المخترق رمز لغة البرمجة النصية لتحدي مشكلات الأمان في موقع WordPress. لذا لتجنب ذلك ، استخدمنا esc_url للهروب من قيمة عنوان URL وبعد ذلك فقط نكرر القيمة في الكود الخاص بنا. بهذه الطريقة ، قمنا بمنع هجوم XSS.

ثغرة WordPress - هجوم CSRF

مزيد من المناقشة حول ثغرة WordPress ، هجوم التزوير عبر الموقع هو تهديدات وهجمات بنقرة واحدة أو هجوم ركوب الجلسة.
يسمح هجوم CSRF للمهاجم بإجبار المستخدم الذي قام بتسجيل الدخول على تنفيذ إجراء مهم دون موافقته أو علمه.
هنا ، ينقل المستخدم المصرح له أوامر غير مصرح بها.
إنه يعتمد على فكرة أن المستخدم المصرح له المرسل إلى صفحة أو عنوان URL معين يمكنه القيام بأشياء لم يدرك أنه فعلها. علاوة على ذلك ، يمكن إصلاحه باستخدام nonce والتحقق من nonce.

باستخدام Nonce

يقوم WP بإنشاء رمز أمان يسمى nonce. إنه رقم فريد غير متكرر لك فقط ويمكنك استخدامه لعملية معينة. قيمة nonce صالحة لمدة 24 ساعة تنتهي بعدها صلاحيتها وسيتم إنشاء القيمة الجديدة بواسطة wp. يمكنك أيضًا تعيين وقت التحقق من الصحة لـ nonce أيضًا.
إنه يحمي عناوين URL والنماذج من سوء الاستخدام لتقليل مشكلات الأمان الحالية في WordPress.

علاوة على ذلك ، من أجل تأمين النموذج باستخدام nonce ، قم بإنشاء حقل nonce مخفي باستخدام دالة wp_nonce_field ():

 <form method="post"> <!-- some inputs here ... --> <?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?> </form>

فيما يلي بعض الوظائف لـ nonce:

  1. wp_nonce_url () - لإضافة nonce إلى عنوان URL.
  2. wp_create_nonce () - لاستخدام nonce بطريقة مخصصة لمعالجة طلبات AJAX.

التحقق من Nonce

  1. check_ajax_referer () - يتحقق من nonce (لكن ليس المرجع) ، وإذا فشل التحقق ، فإنه ينهي تنفيذ البرنامج النصي افتراضيًا.
  2. wp_verify_nonce () - للتحقق من رقم nonce.
 if(isset($_POST['name_of_nonce_field']) && wp_verify_nonce($_POST['name_of_nonce_field'],'name_of_my_action')){ //do something } else{ esc_html_e('Sorry,your nonce did not verify.','text-domain'); }

اتبع هذا الرابط لمعرفة المزيد عن nonce

ثغرة WordPress - هجوم إعادة التوجيه

تتسبب ثغرة WordPress أيضًا في قيام زوار الموقع بإعادة التوجيه التلقائي إلى موقع ويب ضار.
يحدث هذا بشكل عام عندما يعيد الزائر التوجيه إلى أي صفحة أخرى بدلاً من الصفحة أو موقع الويب الذي طلبه.
إذا كان موقعك يحتوي على حركة مرور عالية ، فقد يؤدي هذا الهجوم إلى تقليل حركة المرور إلى موقعك. لن تدرك حتى أن زائر موقعك سيتم إعادة توجيهه إلى أي صفحة أخرى. ومع ذلك ، يمكن إصلاحه بمساعدة Safe Redirect.

إعادة التوجيه الآمن

بعد إجراء أو نموذج إذا كنت تعيد توجيه المستخدم إلى أي صفحة ، فاستخدم wp_safe_redirect. يتحقق wp_safe_redirect من مضيف مسموح به. إذا كان المضيف غير مسموح به ، فسيتم إعادة التوجيه إلى عنوان URL الخاص بالموقع. لذلك ، سيمنع إعادة التوجيه الضارة إلى مضيف آخر. ولكن لم يتم التحقق من ذلك بواسطة wp_redirect. لذلك لتقليل مشكلات أمان WordPress ، يعد استخدام wp_safe_redirect طريقة أكثر أمانًا لإعادة توجيه الروابط.

 $redirect=admin_url('edit.php'); wp_safe_redirect($redirect);

ضعف قدرات المستخدم

إلى جانب هجوم Redirection ، وهجوم XSS ، وهجوم CSRF ، وهجوم حقن SQL ، فإن WordPress ضعيف من إمكانيات المستخدم أيضًا. إذا كنت تسمح لأي مستخدم بالقدوم إلى موقعك لإرسال أي بيانات ، فعليك التحقق من إمكانيات المستخدم. خلاف ذلك ، سوف تكون ضحية للتهديدات والهجمات.
كلما زاد دور المستخدم ، زادت إمكانيات المستخدم.
في بعض الأحيان ، ينسى المطورون فقط التأكد من أن المستخدم الموجود على صفحة يرسل نموذجًا لديه الامتيازات اللازمة لتنفيذ الإجراء أم لا. سوف يجلب مصدرًا مشتركًا للثغرة الأمنية في WordPress.

 if ( current_user_can( 'edit_posts' ) ) { edit_post_link( esc_html__( 'Edit', 'wporg' ), '', ''); }

لنأخذ مثالاً على الثغرة الأمنية في نموذج الاتصال 7 (نوع الثغرة الأمنية في WordPress)

رقم تفعيل هذا البرنامج المساعد هو 5 + مليون مستخدم. إذا كان هناك رمز واحد ضعيف ، فسيؤثر على أكثر من 5 مليون شخص.

نقاط ضعف الامتياز - نموذج الاتصال 7
ضعف امتياز نموذج الاتصال 7

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

قم دائمًا بالعودة أو الخروج في WordPress

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

تأكد من أنك أضفت دائمًا العودة والموت في المكان الذي تقصده. يمكنك أن تأخذ مثالاً على خطأ #gotofail الخاص بشركة Apple.

 defined( 'ABSPATH' ) defined( 'ABSPATH' ) or die ( "No script kiddies please!" );
function function adls_view() { global $wpdb; { global $wpdb;
            include( 'inc/frontend/smls-detail/smls-grid-inline.php' );
           exit(); }
function function adls_generate_random_string ( $length ){
           $string = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
            $random_string = '';
            for ( $i = 1; $i <= $length; $i ++ ) { { $random_string .= $string[ rand( 0, 61 ) ];
            }
            return $random_string;
       }
 }

تغليف

كان هذا منشورًا مهمًا لمحترفي WordPress الذين يهتمون بالأمان. من هذا المنشور ، تعرفت على التهديدات والهجمات المختلفة التي تجلب الضعف إلى WordPress. يتضمن مقدمة موجزة عن هجوم حقن SQL وهجوم XSS وهجوم CSRF وهجوم إعادة التوجيه وغير ذلك الكثير.

التحقق من الصحة - التعقيم - الهروب - Nonce
نقطة لنتذكر

كما تمت مناقشة التقنيات المختلفة مثل تعقيم البيانات والتحقق من صحة البيانات وهروب البيانات واستخدام والتحقق من إعادة التوجيه الآمن وقدرات المستخدم. نتيجة لذلك ، هناك مشكلات أمنية في WordPress.

في الختام ،

  1. لا تثق أبدًا في مدخلات المستخدم لتجنب ثغرة أمنية في WordPress.
  2. التحقق من صحة جميع المدخلات وتعقيمها والتخلص من جميع بيانات الإخراج
  3. دعونا نثق في WordPress!

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