ابحث في هذه المدونة

الثلاثاء، 5 أكتوبر، 2010

تأمين صفحات 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