أخطاء المبرمجين الأمنية فى php
05-10-2008, 08:59 PM
<!-- google_ad_section_start -->7- الجلسات (Session)
أخطاء الجلسات الأمنية و التى تخلق ثغرات فى برنامجك تعتمد على ثلاثة طرق:
الطريقة الأولى هى الإعتراض أو التوقيف و يكون عن طريق إرسال معرف الجلسة كنص عادى عبر الشبكة و الحل لهذه الثغرة بإستخدام إتصال آمن بين المستخدم و الخادم SSL أو TLS على سبيل المثال ، و لا تنسى إستخدام الدالة session_set_****ie_params أو إعداد session.****ie_secure فى ملف ini ، و بهذه الطريقة عندما يطلب المستخدم صفحة معينة على الخادم فإن معرف الجلسة لن يرسل إلا إذا كان الإتصال مشفر بين الخادم و المستخدم.
الطريقة الثانية وهى التوقع فلو أن معرف الجلسة تم إختياره بشكل سىء (كأن يكون تعداداً تصاعدياً مثلاً) فإن المهاجم يستطيع تخمينه و بالتالى الحصول على معرف جلسة لا تخصه ، و الحل الأمثل هو ربط معرف الجلسة بشىء له علاقة بالمستخدم (جلب الـIP مثلاً) ثم إدخاله فى احدى دوال التشفير المذكورة سابقاً (SHA-1 أو MD5) و سوف يتم انتاج أرقام عشوائية بناءً على ذلك و لكن الخادم بإستطاعته مقارنتها و التأكد منها ما إذا كانت مملوكة للمستخدم أم لا.
الطريقة الثالثة و هى الإقتحام بالقوة أو بالأحرى البحث و تخمين طريقة عمل معرف الجلسة و من الممكن التخمين إذا كان المبرمج استخدم مثلاً أرقام ما بين 1 و 10.000 و الحل السابق يكفى لتفادى ذلك فقط تأكد من أن التشفير ليس أقل من 128-bit.
لنفرض أننا بدأنا جلسة ما بعد أن تأكدنا من كلمة مرور المستخدم session_start() لابد أن نعيد تصنيع معرف الجلسة خلال عملية الولوج و تعديل الـ****ie عن طريق session_generate_id و بعد ذلك سوف نقوم بتخزين بعض البيانات التى حصلنا عليها من قاعدة البيانات فى الجلسة
CODE
$_SESSION["user"] = new User($userData->login_id, $userData->name, $userData->email, $userData->username);
لاحظ المستخدم يتكون من: معرف الدخول login_id ، الإسم name ، البريد email ، إسم المستخدم username.
فى السطرين التاليين سوف نقوم بتخزين عنوان المستخدم IP و الوقت الذى بدأت فيه الجلسة
CODE
$_SESSION["IP"] = $_SERVER["REMOTE_ADDR"];
$_SESSION["timestamp"] = time();
الآن تمت عملية تسجيل الدخول
حماية المحتوى و التحكم فى الوصول للبيانات:
للتحكم فى الوصول للبيانات بطريقة سهلة لابد من المراجعة على بيانات الدخول و من العوامل المؤثرة التى تخلق ثغرات أمنية هو كيف تتم المراجعة على البيانات و أين توضع بيانات المراجعة.
على سبيل المثال "includes/session.inc.php" يحتوى على وظائف المراجعة (تستطيع تضمينه مع الملفات التى تريد حمايتها( ، و أسهل الطرق للتأكد من أن المستخدم له حق دخول المنطقة المحمية و الوصول للبيانات هو التأكد من أن الجلسة تم إعدادها بشكل صحيح و أنها تحتوى بعض بيانات المستخدم خلال عملية تسجيل الدخول و أول الخطوات هو التأكد من أن المتغيرات محددة فى مصفوفة $_SESSION
CODE
if(!isset($_SESSION["user"])) {
die("Not logged in");
}
أيضاً التأكد من معرف الدخول إذا كانت قيمته رقمية
CODE
if(!is_numeric($_SESSION["user"]->loginID)) {
die("Not logged in");
}
الآن تأكدنا بشكل كبير من أن صاحب الجلسة قد مر بإجراءات تسجيل الدخول و بما أننا لا نعرف إذا كان المستخدم هو صاحب الجلسة الحقيقى فلابد أن نقارن عنوان الـIP بذلك المخزن لدينا إذا لم يكونا متطابقين فسوف نخرج المستخدم
CODE
if($_SESSION["IP"] != $_SERVER["REMOTE_ADDR"]) {
header("Location: user_logout.php");
}
لو أن الوقت المخزن لدينا ليس أكثر من 30 دقيقة (1800 ثانية) سوف نقوم بتصفير الوقت و إعطاءه 30 دقيقة أخرى للتصفح و إذا كان أكثر سوف نقوم بإخراجه
CODE
if((time() - $_SESSION["timestamp"]) > 1800) {
header("Location: user_logout.php?timeOut=1 ");
}
else {
$_SESSION["timestamp"] = time();
}
إن عملية إخراج المستخدم حاسمة جداً حيث أنه من المهم جداً قطع كل صلات البيانات المرتبطة بالجلسة أو بمعرف الجلسة عند إخراج المستخدم و السطر التالى لإخلاء المصفوفة وهذا يعنى أنه تم مسح البيانات السابقة حتى العنوان IP و التوقيت
CODE
$_SESSION = array();
بعد ذلك نخبر مترجم اللغة بإنهاء الجلسة
CODE
session_destroy();
أيضاً مهم جداً أن نمسح معرف الجلسة من الـ****ie
CODE
unset($_****IE[session_name()]);
x-adolf [email protected]
[email protected]
من مواضيعي
0 التغذية: نصائح وحيل حول الأكل الصحي اهمالها قد يسبب لنا مشاكل صحية لا نعرف اين سببها؟
0 فوضى سينوفاك الصينية.. لقاح واحد و3 نتائج متضاربة
0 "نوع آخر مثير للقلق".. سلالات كورونا المتحورة تنتشر في 50 بلدا
0 إجراء تغييرات إيجابية: نصائح وحيل للتغذية السليمة ولتقوية الاعصاب
0 هل لديك وزن زائد؟ نستطيع مساعدتك
0 يؤثر نظامك الغذائي على صحتك: كيفية الحفاظ على التغذية الجيدة
0 فوضى سينوفاك الصينية.. لقاح واحد و3 نتائج متضاربة
0 "نوع آخر مثير للقلق".. سلالات كورونا المتحورة تنتشر في 50 بلدا
0 إجراء تغييرات إيجابية: نصائح وحيل للتغذية السليمة ولتقوية الاعصاب
0 هل لديك وزن زائد؟ نستطيع مساعدتك
0 يؤثر نظامك الغذائي على صحتك: كيفية الحفاظ على التغذية الجيدة





