WHAT IS SQL INJECTION

May 01, 2024 Copy Link

السلام عليكم 🙌

 

النهارده راجعين بمقالة جديدة و هنتكلم عن ال SQL Injection و اد إيه هو مهم عشان موقعك ميكونش vulnerable 🙅‍♂️

 

اولاً الكلمة دي ممكن نختصرها ب SQLi و هي بتسمح لل attacker انه يتعامل مع ال queries اللي موقعنا بيعملها, و دا بيسمحله انه يشوف داتا مش مسموح ليه انه يشوفها أو ممكن تخلي يوزر يشوف داتا خاصة بيوزر تاني...البيانات دي ممكن تكون Password أو Credit Card 🤐

 

طيب هو ممكن اعرف إذا كان الموقع بتاعي vulnarable و لا لأ؟ 🤔

 

نعم ي صديقي تقدر تعرف بحاجتين و هما ال single quote و ال boolean condition...تعالوا سريعاً نشوف المشكلة بتيجي منين

 

لو أنا هكتب query زي اللي تحت دي و عايز اعملها run بال PHP

 

$query = "SELECT * FROM users WHERE user = '$username' and password = '$password'";

$result = mysql_query($query);

 

بالطريقة اللي فوق دي أنا بثق في البيانات اللي هيكتبها اليوزر, فمثلاً لو كتب في خانة اليوزر نيم admin و في خانة الباسورد  a' or 1 = '1 عشان يبقا شكل ال query الجديد كدا and password = 'a' or '1' = 1 و طبعاً ال condition اللي هو  1 = '1' هيتحقق علي طول و هيرجعلي بيانات كل المستخدمين

 

طيب أعمل إيه عشان أحل المشكلة دي؟

 

الحل إنك تستخدم ال Prepared Statement و دي مُهمتها إنها بتاخد القيمة بتاعة اليوزر زي ما هيا بالظبط, خلونا نعمل run لنفس ال query اللي فاتت بس بإستخدام method تانية في ال PHP

 

$stmt = $mysqli->prepare("SELECT * FROM users WHERE user = ? AND password = ?");

$stmt->bind_param("ss", $username, $password);

$stmt->execute();

 

الميثود اللي إسمها bind_param دي بقولها إني جايلي two inputs string من اليوزر و عايز أشيل علامة الإستفهام الأولي و أحط مكانها اليوزر نيم و التانية أحط مكانها الباسورد, كدا ي صديقي مهما تكن القيمة اللي اليوزر هيكتبها ال PHP هتاخدها زي ما هي بالظبط و بكدا نكون بأمان 🔐

 

طيب في ناس ممكن تكتب ال Boolean Condition و ناس ممكن تكتب ال SQL Comment و اللي بتكون عبارة عن two hypens زي ال query اللي تحت دي ✍

 

SELECT * FROM users WHERE username = 'administrator' -- ' AND password = ''

 

بالشكل اللي فوق دا هيحصل كومنت للجزء اللي بعد اليوزر نيم و هكون قدرت اجيب كل بيانات المستخدمين تاني 🤡

 

و بكدا أكون خلصت و أتمني تكون إستفدت ✔

Share via

Mahmoud Ramadan

Mahmoud Ramadan

Mahmoud is the creator of Digging Code and a contributor to Laravel since 2020.

Most recent

  • How to generate Arabic PDF using TCPDF

    How to generate Arabic PDF using...

    FREE

  • What is SQL Injection

    What is SQL Injection

    FREE

  • Leveraging virtual generated columns in MySQL using Laravel

    Leveraging virtual generated col...

    FREE