الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة:كيف تحمي موقعك *1*

بدأه Digital lion في 29 أبريل 2009 · 6 رد · 990 مشاهدة · في قسم أمن المعلومات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أول طريقة لضمان عدم دخول أي شخص لمكان ما في الموقع أو للموقع بأكمله هي استعمال تصفية للمستخدمين وذلك عن طريق منع الدخول للموقع إلا للمرخص لهم

الخطوات:

تشكيل table في قاعدة البيانات اسمها مثال:user

نشكل داخلها رقم المستخدم id_user الذي سيكون هو المعرف الخاص بالمستخدم وعموما يستعمل بنوع تزايد ألي

اسم المستخدم login_user و كلمة السر password_user

ويكنك إظافة معلومات أخرى مثل:البريد الإلكتروني email_user , اسمه الحقيقي name_user

هذاهو سكربتSQL :


`id_user` int(11) NOT NULL auto_increment,
`login_user` varchar(255) collate utf8_bin NOT NULL default '',
`password_user` varchar(255) collate utf8_bin NOT NULL default '',
`email_user` varchar(255) collate utf8_bin NOT NULL default '',
`name_user` varchar(255) collate utf8_bin NOT NULL default '',
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;
CREATE TABLE `user` (

ننتقل الأن إلى برمجة الموقع :

شكل صفحة HTML عادية تحتوي على FORULAIRE ضع داخله حقل لكتابة اسم المستخدم و أخر لكتابة كلمة السر , للعلم حقل كتابة كلمة السر من نوع خاص يسمح للمستخدم كتابة الكلمة على شكل نجوم، لأن كثيرا من المبتدئين يسألونني كيف نصنع هذا وأخيرا أضف زر الدخول

ملاحظة: لإرسال معلومات FORULAIRE إلى صفحة أخرى لا تستعمل طريقة GET لأنها تكشف المعلومات المبعوثة ولكن أرسلها ب POST لأنها أضمن.

هذا هو كود الصفحة index.html:


<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>index</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="Control.php ">

<label> Login: </label>
<input type="text" name="login" />
<br />

<label> password:</label>
<input type="password" name="password" />
<br />

<input type="submit" name="Submit" value="Connecion" />

</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

هذا FORULAIRE يقوم ببعث المعلومات إلى صفحة PHP نسميها Control.php التي تقوم بالتحقق من المعلومات وتوجه المستخدم إلى داخل الموقع المحمي.لكن قبل شرح كيفية التحقق ليكن في علمكم أن كثيرا من المبتدئين يعتمدون في التحقق من تطابق نوعية أو حجم المعلومات باستخدام الجافا سكريبت فقط أاكد على كلمة فقط لأنه يمكن تعطيل الجافا سكريبت من المتصفح ويتم خلالها كشف عورتك عن طريق SQL injection ,المهم سوف نتكلم عن هذا الجانب في الدروس القادمة وهذا للمحافظة على تسلسل الأفكار.

أما عن برمجة صفحة Control.php فسوف نحتاج فيها بالاتصال بقاعدة البيانات ولذلك سوف نقوم بكتابة صفحة أخرى للاتصال بقاعدة البيانات وتكون على حدا لأننا سوف نستعملها في مواضع أخرى نسميها connexion.php

هذا هو كود الصفحة :



$host = 'localhost';
$user = 'root';
mysql_pconnect($host, $user) or die("erreur de connexion au serveur $host");
// Connexion au base
$bdd='test';
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
?>
<?php

داخل صفحة Control.php نقوم بإضافة كود connexion.php وذلك عن طريق مناداتها) include_once(

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

هذا هو كود الصفحة Control.php:

<?php
// Connexion au serveur
            include_once("connexion.php");

            $login= $_POST['login']    ;
            $password= $_POST['password']    ;        
            $query = " SELECT * FROM user where login_user= '$login' and password_user= '$password'  ";
            $result = mysql_query($query);

                 if ($f=mysql_fetch_array($result)) {
                header('Location: premierpage.php');
                exit;
                }else {
                header('Location: index.html');
                exit;
                }
?>

للتأكد من النجاح نقوم بكتابة صفحة أخرى نسميها premierpage.php ننتقل إليها في حالة التحقق بان المستخدم يحق له الدخول وفي حالة عدم المطابقة نعود بإرجاعه إلى الصفحة الأولى

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>premierpage</title>
</head>
 <label>  ok </label> 
<body>
</body>
</html>

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

يوجد ملف مرفق يحتوي على مواد هذا الدرس

الدرس التالي إن شاء الله : إستعمال session لتأكيد الحماية

exemple.rar

تم تعديل هذه المشاركة بواسطة Digital lion في 29 أبريل 2009 في 22:10

مجرد إحساس...نحن جيل التغير بإذن الله

#2

جميل...اكمل :)

---

ملحوظه :

اقتباس
ملاحظة: لإرسال معلومات FORULAIRE إلى صفحة أخرى لا تستعمل طريقة GET لأنها تكشف المعلومات المبعوثة ولكن أرسلها ب POST لأنها أضمن.

كل المعلومات مكشوفه :D

ما عندك الا ال Encryption .. وهذا موال طبعا .. ولكنه الحل لو تريد حمايه ال Plain text pass

#3
اقتباس
ملاحظة: لإرسال معلومات FORULAIRE إلى صفحة أخرى لا تستعمل طريقة GET لأنها تكشف المعلومات المبعوثة ولكن أرسلها ب POST لأنها أضمن.

GET تظهر المعلومات المرسلة في شريط العنوان على هذا الشكل :

name=value&name2=value2

حيث name تكون إسم الحقل أما value فهي القيمة التي وضعها المستخدم أما POST فهي لاتظهر المعلومات في شريط العنوان .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#4
ASDen كتب:
جميل...اكمل :)

---

ملحوظه :

كل المعلومات مكشوفه :D

ما عندك الا ال Encryption .. وهذا موال طبعا .. ولكنه الحل لو تريد حمايه ال Plain text pass

بارك الله فيك على الملاحضة القيمة ,ولكنك لم تفهم فكرة السلسلة حيث أننا نريد التدرج في الأفكار حتى يفهم كل المبرمجين وتكون باسلوب تسلسلي

اما عن ما ذكرته انا فطريقة القات تسمح بمشاهدة المتغيرات على المتصفح ولهذا يسهل اكتشافها

لكن موضوعك مهم في المراحل القادمة ان اردت المساهمة معنا في هذه السلسلة سلسلة:كيف تحمي موقعك

مجرد إحساس...نحن جيل التغير بإذن الله

#5
اقتباس
بارك الله فيك على الملاحضة القيمة ,ولكنك لم تفهم فكرة السلسلة حيث أننا نريد التدرج في الأفكار حتى يفهم كل المبرمجين وتكون باسلوب تسلسلي

شكرا على التوضيح

اعتراضى كان فقط انه حتى لو السلسله من البدايه...فالمعلومه الافضل ان تكون ادق او فقط تترك علامه للقارىء ان هذا الكلام ليس ادق ما يقال بقدر ماهو ابسطه

---

المهم ان لاتأخذ التعليقات على غير محمل التعاون :D

اكمل على بركه الله

#6

كلام جميل. لكن اتمنى ان توضح اكثر ان هذا العمل لايمكن استخدامه كما هو، وتوضح جوانب القصور في هذا الكود.

افهم ان هذا هو الدرس الاول ومنطقي ان يكون ناقص، لكن اعتقد هذي الاضافة مهمة جدا.

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#7

لم يعد ال GET أو ال POST مشكلة فى الحماية

خاصة بعد ظهور browsers extensions تسهل العملية فمثلا فى webdeveloper toolbar أو firebug فى الفايرفوكس يمكنك التعديل على ال FORM كما تريد

المفاضلة فى POST و GET هى السرعة فى إرسال المعلومات فقط فال GET أسرع

لا تراجع و لا إستسلام

مواضيع مشابهة