عرض مشاركة واحدة
مشرف قسم تطوير المواقع
تاريخ التسجيل: Feb 2003-
#15 (permalink)  

السلام عليكم
عدنا

حماية سكربتاتنا :


البيئة البرمجية

لحماية سكربتاتنا يجب ان نوفر بيئة خاصة و محمية , الأغلبية هنا يستعملون الPHP كمجرد module في الApache و كما تعلمون الApache عادة ما يكون في Group او مجموعة خاصة و يكون اسمها في الغالب" nobody "

و اذا اردنا مثلا عمل سكربت يستعلم بيانات من قاعدة بيانات اذن يجب ان نجعل قاعدة البيانات متاحة للمستخدم " nobody" لكي يستطيع القيام بعملية الإستعلام + حماية القاعدة من خلال تحديد صلاحيات الApache او تخصيص الإتصال بقاعدة البيانات و حمايتها يا إما بعمل حماية للملفات التي تتصل بالقاعدة (قاعدة البيانات طبعا ) و ذلك يكون بhtaccess , LDAP , ...

وهذا طبعا لا يكفي و لا يجعل حماية المجلدات الأخرى و قواعد البيانات مضمونة فإن بستعمال الPHP بإمكانك تغير مجلدك بإستعمال الchroot function
و غيرها من الfunctions مثل : exec , system ....
و لكن مثل هذه الأشياء بإمكانك الوقاية منها و منع حدوثها بإستعمال open_basedir

و أيضا الSAFE MODE و الDisabled_functions يجب تعديلهامن php.ini

حماية كلمات و المرور و التثبت في البيانات التي يتم ادخالها لقواعد البيانات
في هذا المثال سنأخذ الpostreSQL
كود PHP:
<?

$query  
sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",addslashes($username), md5($password));
$result pg_exec($conn$query);

$query sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",addslashes($username), md5($password));
$result pg_exec($conn$query);
if (
pg_numrows($result) > 0) {    
echo 
"Welcome, $username!";
}
else {    
echo 
"Mr $username Happy new DAY :p";
}

?>
في هذا المثال يتم تشفير كملة المرور md5 ثم في محاولة تسجيل الدخول نقوم بالتثبت في كلمة المرور المخزنة و طبعا نلاحظ بعض الإجراءات الأمنية مثل استعمال addslashes

بإمكان استعمال عدة دوال اخرى لتنقية و التثبت من المعلومات المدخلة الى قاعدة البيانات : htmlspecialchars , trim ...

مثال لهجوم : مثل لو اراد شخص ما ادخال username الخاص به و كتب مثلا <h1>you site is defaced by me</h1> و ثم اردت عرض الأعضاء الذين اشتركو ستجد ان العضو هذا اسمه بالحجم الكبير و بذلك يجب استعمال htmlspecialchars في عرض قائمة الأعضاء ...


و في ايضا الSQL injection سأشرحها في المرة القادمة لو اردتم طبعا
و ان شاء الله يكون ردي نفعكم بشي






__________________
-{Only God Can Judge Me}-
القانون فوق الجميع و الجميع يموت بالجوع
Dr-dre67 غير متواجد حالياً   قديم 24-12-2004, 05:51 PM