I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

دليل تأمين تطبيقات الويب (Web Security) ضد ثغرات OWASP Top 10

دليل تأمين تطبيقات الويب (Web Security) ضد ثغرات OWASP Top 10 يا مساء الفل على كل مبرمج بيسهر عشان يطلع كود نظيف ومحمي. أكيد في مرحلة ما من شغلك، سمعت عن كابوس

دليل تأمين تطبيقات الويب (Web Security) ضد ثغرات OWASP Top 10
Reading Count: 3

دليل تأمين تطبيقات الويب (Web Security) ضد ثغرات OWASP Top 10

يا مساء الفل على كل مبرمج بيسهر عشان يطلع كود نظيف ومحمي. أكيد في مرحلة ما من شغلك، سمعت عن كابوس اختراق المواقع، أو شفت خبر عن تسريب بيانات بسبب "ثغرة بسيطة". الحقيقة إن تأمين تطبيقات الويب (Web Security) مش رفاهية، ده جزء أساسي من بناء أي مشروع محترم. النهاردة هنتكلم عن قائمة (OWASP Top 10)، وهي الدليل الأشهر لأخطر 10 ثغرات في العالم، ونركز على أهم اتنين فيهم: حقن قواعد البيانات (SQL Injection) وهجمات السكربتات العابرة للمواقع (Cross-Site Scripting - XSS).

فهم خطورة ثغرات حقن قواعد البيانات (SQL Injection)

تخيل إنك بتبني صفحة تسجيل دخول، وبدل ما اليوزر يكتب اليوزر نيم بتاعه، يكتب كود يمسح قاعدة البيانات بالكامل! ده هو الـ SQL Injection باختصار. المهاجم بيستغل أي مدخل (Input) بياخده منك عشان يحقن أوامر SQL تتنفذ جوه السيرفر بتاعك.

مثال للكود غير الآمن:

$username = $_POST['user']; $query = "SELECT * FROM users WHERE username = '" . $username . "'";

لو اليوزر دخل القيمة دي: ' OR '1'='1، الاستعلام هيبقى SELECT * FROM users WHERE username = '' OR '1'='1'، وده معناه إن الشرط دايماً متحقق وهيدخل على أي حساب من غير باسورد! الحل السحري هنا هو استخدام الاستعلامات المحضرة (Prepared Statements).

الطريقة الصحيحة للتأمين:

$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $stmt->execute(['username' => $input_user]);

هنا إحنا بنفصل الكود عن البيانات، فالداتا بيز بتعامل أي مدخل كقيمة نصية (String) بس، مش كأمر برمجي.

كابوس السكربتات العابرة للمواقع (Cross-Site Scripting - XSS)

ثغرة الـ XSS بتحصل لما التطبيق بتاعك بياخد بيانات من اليوزر ويعرضها تاني على الصفحة من غير تنقية. المهاجم ممكن يبعت كود JavaScript في كومنت أو في رابط، وأول ما أي يوزر تاني يفتح الصفحة، الكود ده يتنفذ في البراوزر بتاعه، وممكن يسرق الكوكيز (Cookies) أو يعمل تصرفات تانية.

كيف تحمي نفسك؟

  • دائماً استخدم خاصية التنقية (Output Encoding): حول أي حروف خاصة زي ( < , > ) لرموز HTML آمنة قبل ما تعرضها.
  • استخدم خاصية Content Security Policy (CSP): ده هيدر (Header) بتضيفه في السيرفر بيحدد البراوزر مسموحله يشغل أكواد JavaScript منين بالظبط.
  • فلتر المدخلات (Input Validation): متثقش في أي داتا جاية من اليوزر مهما كانت.

استراتيجيات عامة لتأمين تطبيقات الويب

التأمين مش بس إصلاح ثغرتين، ده عقلية (Security Mindset):

  1. قاعدة "لا تثق في أحد": افترض إن كل داتا جاية من المستخدم "ملغمة".
  2. تحديث المكتبات (Dependency Management): أغلب المبرمجين بينسوا يعملوا Update للـ Libraries اللي بيستخدموها، ودي بتكون مدخل سهل للمخترقين.
  3. مبدأ أقل صلاحيات (Principle of Least Privilege): حساب الداتا بيز اللي مربوط بالموقع ميكونش ليه صلاحيات "Root" أو "Admin" على السيرفر كله.

نصيحة من أخ لمطور المستقبل

يا صديقي، التأمين رحلة مش محطة. كل يوم بيطلع تقنيات جديدة وأساليب اختراق أحدث. نصيحتي ليك إنك تدخل دايماً على موقع منظمة OWASP وتتابع التحديثات بتاعتهم، وجرب تعمل (Security Testing) على مشاريعك الشخصية كأنك "هاكر" بيحاول يكسر الكود بتاعك. المبرمج الشاطر مش بس اللي بيكتب كود بيشتغل، ده اللي بيكتب كود يصعب على أي حد يضره. ابدأ اتعلم عن الـ Pentesting الأساسي، هتفرق جداً في جودة تفكيرك البرمجي.


Share

Related posts

Jun 08, 2026 • 1 min read
Reading Count: 8
مكونات الويب Web Components: هل هي المسمار الأخير في نعش إطارات العمل؟

مكونات الويب Web Components: هل هي المسمار الأخير في نعش إطارات العمل؟ تخيل معايا السيناريو ده: بتشت...

Jun 07, 2026 • 1 min read
Reading Count: 11
إزاي تنظم وقتك كمطور تطبيقات متكامل (Full-Stack Developer) من غير ما "تتحرق"

إزاي تنظم وقتك كمطور تطبيقات متكامل (Full-Stack Developer) من غير ما "تتحرق" يا مساء الفل على كل الم...

Jun 06, 2026 • 1 min read
Reading Count: 11
إزاي تبني تطبيق SaaS من الصفر: خريطة طريق للمبرمج الطموح

إزاي تبني تطبيق SaaS من الصفر: خريطة طريق للمبرمج الطموح كلنا كمبرمجين عندنا اللحظة دي، لحظة "الفكرة...