تأمين رمز PHP الخاص بك

  • من الأهمية بمكان ضمان بيانات آمنة من المستخدمين (النماذج وعناوين المواقع الخ) بصرف النظر عن خادم نظام التشغيل وخادم http بشكل رئيسي بسبب هجوم الويب.
  • هناك 3 فئات لتأمين كود php الخاص بك:

التحقق من صحة مستخدمي البيانات

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

التحقق من صحة البيانات من URL أو النماذج

جميع البيانات الواردة تقريبًا تأتي من عنوان URL أو النماذج التي أعدها مشرف الموقع. تقريبًا جميع معلمات عرض عنوان URL التي تحدد ما يلي:

/index.php؟rub=25

يجب ألا يتم تعديل هذه المعلمة. ولكن هذا ممكن على النحو التالي:

 /index.php؟rub=0 /index.php؟rub= /index.php؟rub=aaaaAAAAAaaaa /index.php؟rub=1+or+1 
  • من الضروري التحقق مما إذا كان التنسيق الذي تم استلامه من خلال عنوان URL أو النموذج متوقعًا مهما كانت أنواع البيانات.
  • يمكنك استخدام الدالة filter_input () للتحقق من ذلك.
  • على سبيل المثال ، إذا تلقيت بريدًا إلكترونيًا من مستخدم من التنسيق المنشور باسم الحقل كرسالة بريد إلكتروني. يمكنك استرداد نفسه عن طريق:

 $ email = filter_input (INPUT_POST، 'email'، FILTER_VALIDATE_EMAIL)؛ if ($ email) {// إدخال عنوان البريد الإلكتروني هو بالفعل تنسيق عنوان بريد} 

يمكن لهذه الوظيفة تصفية العديد من الأشياء: عنوان IP وعنوان URL وما إلى ذلك. يمكن أن يكون هناك تعديلات مثل سلسلة الترميز قبل الإرسال عبر URL كعملية من خلال htmlentities ().

  • يمكن دمج عدة مرشحات باستخدام "|" .
  • للتحقق من صحة عنوان IP لعنوان IPp4 فقط:

$ ip = filter_input (INPUT_GET، 'ip'، FILTER_VALIDATE_IP | FILTER_FLAG_IPV4) ؛

انقر على الرابط التالي للمرشحات:

//www.php.net/filter

تخطي المحتوى المعروض من URL

عندما يتم عرض المحتوى الذي أدخله المستخدم على الشاشة ، فإنه يحتوي على كود HTML أو JavaScript مما يجعل الحماية إلزامية.

إذا كان المحتوى الذي سيتم عرضه بتنسيق html: يجب عليك ترميز HTML لتحويل الإعداد لتحويل جميع الأحرف في كيانات HTML المكافئة. فيما يلي وظيفة php لأتمتة هذه العملية:

echo htmlentities ($ _ REQUEST ['content']) ؛

إذا كان يجب عرض المحتوى في عنوان URL: يجب عليك إعادة ربط المحتوى.

يحتوي PHP على وظيفتين للقيام بهذا الترميز: urlencode () و rawurlencode (). الفرق بين هاتين الوظيفتين هو ترميز منطقة ، والتي تعطي في الوظيفة الأولى وتوفر٪ 20 و "+" في الثانية.

 echo '//www.website؟valeur='.urlencode($_REQUEST Budap'value'])؛ 

إذا كان يجب تخزين المحتوى في قاعدة بيانات: فمن الضروري الهروب من جميع الأحرف مع دور محدد في خادم قاعدة البيانات المستخدمة. بالنسبة إلى PHP و MySQL ، فإن الدالة mysql_escape_string () تجعل كل الأحرف الضارة في السلسلة يتم تمريرها كمعلمة.

 $ query = 'SELECT id FROM matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['user']). '"'؛ 

لاحظ أنه تم تكوين الخادم باستخدام خيار PHP magic_quotes ، فإن البيانات المرسلة من قبل المستخدمين محمية تلقائيًا بشرطة مائلة عكسية (شرطة مائلة للخلف). وبالتالي ، قبل حماية mysql_escape_string ، يجب عليك "التراجع" عن هذه الحماية الأساسية:

 $ query = 'SELECT id From mytable WHERE user = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['user'])). '"'؛ 
المقال السابق المقالة القادمة

نصائح الأعلى