التخطي إلى المحتوى الرئيسي

تأمين صفحات PHP ضد الهجمات


عند إنشاءك موقع أو صفحة ويب تحتوي على نموذج إدخال البيانات فان أول شيء يجب عليك التفكير فيه هو تأمين صفحة الويب من أخطار الأشخاص المخربين الذين يستعملون شتى الحيل كإدخال حقن sql و ترويسات html  أو نصوص JavaScript  وغيرها من الطرق التي من الممكن أن تخرب/ تبطئ عمل الموقع بشكل من الأشكال, وتعد نماذج الإدخال مثل textbox و textarea من أهم العناصر التي يجب الاهتمام بأمانها وأمان المعلومات المدخلة بواسطتها حيث غالبا ً تكون النماذج مع اتصال مباشر مع قواعد البيانات لذا تكون قواعد البيانات عرضة للخطر حينها.
لحسن الحظ فأن PHP توفر بعض المزايا المتقدمة للحفاظ على امن نماذج الإدخال وتطبيق عمليات الفلترة عليها:

استخدم POST

إن كان النموذج يحتوي على بيانات سرية أو مهمة مثل تفاصيل حساب المستخدم, كلمات السر, رقم credit card.... فلا بد من استخدام الدالة POST عند تناقل البيانات سواء بين صفحة PHP وقواعد البيانات أو بين صفحة PHP وصفحة PHP أخرى.
بخلافه فأن عند استخدامك للدالة GET ستظهر المعلومات بشكل علني في شريط العنوان ولا اعتقد انك تحبذ هذا :D
كما ترى أدناه فقد أنشأنا صفحة دخول مستخدم واستخدمنا فيها الدالة GET :

لقد كتبت اسم المستخدم ali وكلمة السر ali لنرى ما سيحدث بشريط العنوان عند ملئ البيانات وإرسالها:

 

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

أما في حالة POST سيكون شكل شريط العنوان كالتالي:




اعتقد انك فهمت ما اقصده الآن.


empty()

تمكنك الدالة empty  من التحقق من إن المستخدم لا يرسل النموذج أو الحقل فارغا ً حيث يمكننا عرض رسالة مثلا ً عند حصول ذلك:


$user=$_POST['user'];
If (empty($user)) {
echo "I bet you forgot some fields";
}






strlen()

تفيد هذه الدالة في معرفة عدد الأحرف التي يدخلها المستخدم فمثلا يمكننا منع المستخدم من إدخال نصوص التي يكون عدد أحرفها يزيد عن 30 حرفا ً:


$user=$_POST['user'];
If (strlen($user)>30) {
echo "that is too much!";
die();
}



strip_tags()

تعتبر من أهم دوال تأمين صفحة الويب حيث تعمل هذه الدالة على انتزاع أية ترويسات او وسوم خاصة بلغات اخرى وكذلك يمكن اضافة دالة trim() التي تتأكد من إن المدخلات هي نصوص فقط :


$user=$_POST['user'];
strip_tags(trim($user));



escapeshellcmd()

تعد هذه الدالة من الدوال المهمة حيث تتخلص من أي أوامر للغة sql من الممكن من المستخدم إن يكتبها في حقل ما حيث تسبب هذه الأوامر تخريب ومسح البيانات المخزنة على قواعد البيانات يمكن استخدام هذه الدالة كالتالي:


$user=$_POST['user'];
escapeshellcmd($user);






stripslashes()


وتفيدنا هذه الدالة في التخلص من علامات السلاش "/" وكما يلي:


$user=$_POST['user'];
stripslashes($user);


 



تعليقات

‏قال غير معرف…
عاشت الايادي...... God bless you bro

المشاركات الشائعة من هذه المدونة

الفرق بين unlocked و locked في الهواتف المحمولة

في بعض الاحيان تلاحظ وجود كلمة unlocked بعد اسم المنتج على علبة الهاتف المحمول, او ربما يسألك البائع اذا ماكنت تريد الهاتف لشبكة اتصالات معينة ام حرا... في بعض الهواتف كهاتف iphone يتوافر نوعان منه locked و unlocked حيث الهاتف المقفل locked   يكون متاحا ويعمل على شبكة اتصالات محددة في بلدك تختارها انت بنفسك ويكون سعر الهاتف المقفل بقدر ربع السعر الحقيقي للهاتف الغير مقفل, وهذا النظام هو صفقات توقع بين شركات الهاتف وشركات الاتصالات, ومن مساوء هذه الاجهزه هو حالما تسافر الى بلد اخر سيتوقف الجهاز عن العمل تماما ولا يمكنك تشغيله على بطاقة شريحة SIM اخرى, لذا سيكون الهاتف عديم الفائدة, اما الهواتف الغير مقفلة unlocked فهي هواتف عادية تعمل على اي نوع من شبكات الاتصالات ويكون سعرها باهض جدا مقارنة بالهواتف المقفلة. 

انشاء صفحة تسجيل دخول

مستوى الدرس:  متوسط اللغات المستخدمة:   PHP ,  SQL, HTML  كما أفترض ان لديك معرفة مسبقة بأساسيات لغة SQL والقليل من PHP   . البرامج المستخدمة:  مخدم  WAMP ، برنامج Adobe Dreamweaver CS5 او اي محرر "كود" برمجي . الصفحات التي سوف ننشئها :   Index.html   process.php   welcome.html ان انشاء صفحة تسجيل دخول حقيقية ليست بالصعوبة التي تتصورها فكل الية تسجيل دخول تتشابه بالاساسيات وربما تختلف من ناحية الجرافكس او شدة الاجراءات الوقائية, في النهاية كلها تتألف من ثلاث مراحل (ادخال البيانات, التحقق من وجود البيانات في قاعدة البيانات, التصرف في حال وجودها ام عدمه) لاشيء اخر وكلها في غاية السهولة!! تابع معي: الخطوة الاولى يجب ان ننشىء جدول في قاعدة البيانات يحتوي على جدول مكون من ثلاثة حقول (id, user, pass) وسندخل بعض المعلومات عن اسماء مستخدمين وكلمات السر كما هو موضح في الصورة: لقد ادخل معلومات مستخدم واحد كما هو موضح , والان لننتقل الى الخطوة التالية: الخطوة الثانية انشاء الصفحات الثلاث (صفحة استقبال المعلومات, صفحة معالجة المعلومات والتحقق من وجودها في قاعدة الب

انشاء نموذج الاتصال بنا

مستوى الدرس:  متوسط اللغات المستخدمة:   PHP ,   HTML  كما أفترض ان لديك معرفة مسبقة بأساسيات لغة PHP   . البرامج المستخدمة:  مخدم  WAMP ، برنامج Adobe Dreamweaver CS5 او اي محرر "كود" برمجي . الصفحات التي سوف ننشئها :   contact.php process.php ان من الصفحات الاساسية في كل موقع هي صفحة تمكن الزائرين من الاتصال بصاحب الموقع, او المدونة او الشركة او غيرها.حيث غالبا هذه الصفحات تتكون من نماذج اتصال مثل (نموذج دردشة, نموذج ارسال رسالة) وغيرها , كما تحتوي على معلومات اتصال اخرى. نماذج الاتصال تستخدم صفحات ديناميكية لمعالجة طلب الاتصال فمثلا لو كان نموذج دردشة مع خدمة الزبائن فمن خلال الصفحة الديناميكية يتم التأكد ما ان كان الموظف متواجد ام لا وعلى هذا الاساس يتم تفعيل صفحة برنامج الدردشة والذي غالبا يكون بلغة  JavaScript . لنركز على نموذج الاتصال الشائع والذي من خلاله يمكنك ارسال رسالة تحتوي على اسمك وبريدك الالكتروني ومحتوى الرسالة الى بريد الشركة او الموقع بدون استخدام خدمات البريد التقليدية... فكيف يعمل؟ سنقوم في هذا الدرس بأنشاء صفحة (اتصل بنا) تحتوي على