حاجة مهمة جداً وقعت فيها وحبيت أقدمها لكم وهى الحماية من اختراق كلمات السر والباسوورد الخاصة بنموذج اللوج أن الخاص بك
ابدأ معايا الكلام واحد واحدة
لو عندنا كود نموذج لوج إن هكذا
<form method="post" action="login.php"> <input type="text" name="username"> <input type="password" name="password"> </form>
وكانت جملة ال SQL هكذا
"SELECT id FROM logins WHERE username = '$username' AND password = '$password'";
فلو أننا افترضنا أن اليوزر هى bakr
وقمنا بادخال الباسوورد هكذا
anything' OR 'x'='x
طبعاً ستكون النتيجة أن جملة السيكول ستكون بهذه الصورة
"SELECT id FROM logins WHERE username = 'bakr' AND password = 'anything' OR 'x'='x'";
وعناه أن افتح لوكان اليوزر يساوى اليوزر ... وهذا تحقق فعلاً
و الباسوورد تساورى أى حاجة aything أو أن ال x = x
وطبعاً ال x تساوى نفسها
والناتج أن الموقع هيفتح
والمشكلة دى ممكن يكون فيه ناس كتير واقعين فيها
والحل ياجماعة هو أننا قبل أن نستخدم الباسوورد نقوم بتشفيرها هكذا
$password=md5($password);
وهذه هى المستخدمة فى المنتيات والأنظمة الكبيرة
أرجو عدم الاستخدام بطريقة سيئة وأن تنتفعوا بها ولا تضروا بها والله يعلم نيتى فى هذا
ومن قام ببرمجة أى موقع وارتكب هذا الخطأ فعليه أن يقوم بما قمت به من إصلاح هذا الخطاً
والحرص من أى input text مدخل من المستخدم لأنه ممكن أن يكتب فيها أوامر sql وغيرها مما قد يسبب مشاكل
وعلى فكرة الموضوع ده خاص بكل اللغات مش ال php فقط لأنها خاصة بجمل ال sql وطبعاً على اختلاف الطريقة وشكل الأمر
دعواتكم
