كل شي لازم تعرفه عن الثغرات الأمنية بالمواقع

يا صديقي المطوّر، إذا فكّرت إنو خلصت شغلك وقت ما خلصت الكود ورفعت المشروع على السيرفر… فأنت بخطر :sweat_smile:
لأنو أكبر المشاكل بتبلّش بعد النشر!

التصميم والبرمجة مهمين، بس إذا ما حطيت اعتبار للثغرات الأمنية، فمشروعك عبارة عن صندوق كنز مفتوح للهاكرز :bullseye:
خلينا نغوص سوا بأشهر الثغرات، الأمثلة الواقعية، والحلول يلي بتحمي شغلك.


:firecracker: ١. SQL Injection – حقن الاستعلامات

أشهر وأقدم ثغرة، وللأسف بعدها موجودة كتير لليوم.

:pushpin: شو بصير؟
الموقع بياخد مدخل من المستخدم (متل اسم مستخدم أو ID)، وبيحطه جوّا استعلام SQL بدون تعقيم، فالمهاجم بيحقن كود ضار.

:round_pushpin: مثال واقعي:
موقع Yahoo بـ 2012 انضرب، وتسرّب منه أكتر من 450 ألف حساب.

:white_check_mark: الحل:
استخدم دائمًا prepared statements أو ORM (متل Eloquent بلارافيل أو Prisma بنود).


:test_tube: ٢. XSS – Cross-site Scripting

ثغرة بتسمح بزرع سكربت جافاسكريبت ضمن الموقع.

:pushpin: شو بصير؟
مهاجم بيزرع كود ضمن كومنت أو اسم مستخدم، والموقع بعرضه بدون تعقيم → الكود بنفذ بمتصفح الضحية.

:round_pushpin: مثال:
موقع eBay اتعرض لكتير XSS بثغرات ضمن صفحات المنتجات.

:white_check_mark: الحل:

  • Escaping للمخرجات (output)
  • فلترة المدخلات
  • Content Security Policy (CSP)

:counterclockwise_arrows_button: ٣. CSRF – Cross-site Request Forgery

هجوم بيستغل وجودك كمستخدم مسجّل (وعندك توكن دخول)، وبيخليك تنفّذ عملية بدون ما تعرف.

:pushpin: مثال:
ثغرة بـ Netflix كانت بتسمح بتغيير البريد الإلكتروني للمستخدم!

:white_check_mark: الحل:

  • استخدم CSRF tokens
  • حدد الـ HTTP method (POST بدل GET)
  • تحقق من Origin/Referer

:brick: ٤. IDOR – Insecure Direct Object Reference

ثغرة بتسمح للمهاجم يوصل لموارد مو إله، من خلال تغيير ID بالـ URL أو البيانات.

:round_pushpin: مثال:
ببعض مواقع الدفع، المستخدم غيّر رقم الطلب بـ URL وقدر يشوف فواتير ناس تانية :scream:

:white_check_mark: الحل:

  • تحقق من ملكية البيانات بالسيرفر (مش بس الرقم!)
  • لا تعتمد فقط على IDs بالـ frontend.

:fire: ٥. RCE – Remote Code Execution

أخطر نوع، لأنه بيعطي صلاحية تنفيذ أوامر على السيرفر.

:round_pushpin: مثال:
ثغرة Log4Shell (2021) ضربت ملايين السيرفرات حول العالم بسبب مكتبة بسيطة بلوجات الجافا!

:white_check_mark: الحل:

  • راقب مكتبات الطرف الثالث
  • حدث بشكل مستمر
  • استخدم sandbox أو isolated execution إذا ممكن

:satellite_antenna: ٦. SSRF – Server-side Request Forgery

ثغرة بتخلي الموقع يعمل طلبات داخلية على الخوادم (حتى لو كانت محمية).

:round_pushpin: مثال:
شركة Capital One انضربت بهالثغرة بسبب صلاحيات زيادة، وانسرق أكتر من 100 مليون سجل!

:white_check_mark: الحل:

  • لا تسمح بطلبات HTTP من السيرفر بناءً على مدخل المستخدم
  • فلترة العناوين، رفض الـ localhost والـ metadata IPs

:open_file_folder: ٧. File Upload Vulnerabilities

رفع ملف بدون تحقق؟ مبروك، فتحت باب بيتك للهاكر :grimacing:

:round_pushpin: مثال:
بعض إضافات WordPress كانت تسمح برفع ملفات PHP وتشغيلها!

:white_check_mark: الحل:

  • حدد الامتدادات المقبولة
  • تحقق من الـ MIME type
  • غيّر اسم الملف بعد الرفع
  • خزن الملفات بمكان غير قابل للتنفيذ

:scroll: ٨. Open Redirect

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

:round_pushpin: مثال:
كتير من روابط إعادة التوجيه (redirect) بمواقع كبيرة انضربت بهالطريقة، متل Google وLinkedIn.

:white_check_mark: الحل:

  • لا تستقبل رابط إعادة التوجيه كـ GET param
  • إذا ضروري، فلتره وتأكّد من الدومين

:open_mailbox_with_raised_flag: ٩. Email Spoofing / Phishing

أنت ممكن تبعت إيميلات من موقعك، بس إذا ما ضبطت الـ DNS بشكل منيح، ممكن حدا تاني يبعث إيميلات باسمك!

:white_check_mark: الحل:

  • طبّق SPF, DKIM, وDMARC بسجلات DNS
  • راقب سمعتك البريدية

:brain: ١٠. Business Logic Vulnerabilities

هاي الأخطر أحيانًا، وبتجي من سوء تصميم منطق الموقع.

:round_pushpin: مثال:
موقع بيع إلكتروني سمح للناس يغيروا سعر المنتج عن طريق الـ JavaScript بالمتصفح قبل الإرسال :flushed_face:

:white_check_mark: الحل:

  • لا تثق أبدًا بأي شي جاي من الـ frontend
  • راجع منطق الدفع/الخصم بالسيرفر

:chart_decreasing: ١١. Rate Limiting & Brute Force

إذا ما حطيت حد لمحاولات الدخول، الهاكر رح يحاول يحزر الباسورد للصبح :new_moon_face:

:white_check_mark: الحل:

  • حد المحاولات (Rate Limit)
  • CAPTCHA
  • 2FA للمستخدمين

:dna: ١٢. Misconfigured Permissions

Permissions غلط = وصول غير شرعي :unlocked:

:round_pushpin: مثال:
ثغرات S3 buckets بأمازون بسبب إعدادات عامة (Public Read).

:white_check_mark: الحل:

  • راجع صلاحيات الملفات والمجلدات
  • خليك دايمًا بـ principle of least privilege

:firecracker: ١٣. Clickjacking

الموقع بينعرض ضمن iframe، والمستخدم بيضغط على شي ما بيعرفه.

:white_check_mark: الحل:

  • حط X-Frame-Options: DENY
  • استخدم CSP headers

:light_bulb: نصائح ختامية:

  • لا تثق بالـ frontend… أبدًا.
  • دايمًا فكّر بأسوأ سيناريو، واشتغل لتمنعه.
  • اختبر موقعك بأدوات اختراق أخلاقية (OWASP ZAP, Burp Suite…)
  • تابع تحديثات الأمان دايمًا، خصوصًا للمكتبات الجاهزة.
10 إعجابات

مقال رائع صديقي، الله يعطيك العافية.

إعجابَين (2)