أمن تطبيقات الويب للمبتدئين: الأساسيات التي لا تتخطاها
**أمن تطبيقات الويب: الأساسيات اللي ما ينفع تتخطاها أبدًا**
يا جماعة، خلونا نوقف شوي ونرجع للبداية بصدق.
كثير ناس يدخلون مجال أمن تطبيقات الويب وهم متحمسين، يبون يروحون على طول لـ SQL Injection وXSS وBurp Suite والـ Payloadات، ويظنون إن هذا هو "الأمن".
الحقيقة؟ هذي الطريقة تبني لك مهارات سطحية. تقدر تلاقي ثغرة، بس ما تفهم ليش صارت، ولا كيف تمنعها من الأساس، ولا كيف تفكر زي المهاجم الحقيقي.
الأساسيات مو شيء "ممل" أو "للمبتدئين فقط". الأساسيات هي اللي تفصل بين واحد يضغط أزرار، وواحد يفهم النظام من جوه.
اليوم راح نبني الأساس بقوة. مش مقدمة خفيفة، مقال طويل وواضح وعميق.
---
### أول شيء: وش هو تطبيق الويب أصلًا؟
تطبيق الويب مو بس صفحة تشوفها في المتصفح.
هو نظام كامل يتكون من طبقات:
- **المتصفح (Client)**: اللي يشتغل عند المستخدم. فيه HTML وCSS وJavaScript، وفيه ذاكرة (Cookies، LocalStorage، SessionStorage...).
- **الشبكة**: الطلبات والاستجابات اللي تمشي بين المتصفح والخادم (HTTP/HTTPS).
- **الخادم (Server)**: اللي يستقبل الطلب، يعالجه، ويتكلم مع قاعدة البيانات أو خدمات ثانية.
- **قاعدة البيانات**: المكان اللي تتخزن فيه البيانات الحساسة.
- **الصلاحيات والجلسات**: اللي تقرر "من أنت" و"وش تقدر تسوي".
كل طبقة من هذي فيها نقاط ضعف محتملة. المهاجم ما يحتاج يكسر كل شيء، يكفي إنه يلاقي نقطة ضعف في طبقة واحدة ويستخدمها كمدخل.
---
### ليش الأمن في تطبيقات الويب مختلف؟
لأن تطبيق الويب مفتوح للعالم. أي شخص يقدر يرسل طلب. ما فيه "جدار" واضح زي الشبكة الداخلية.
المهاجم يقدر:
- يشوف كل الطلبات اللي تطلع من المتصفح.
- يعدل عليها.
- يرسل طلبات من عنده مباشرة بدون ما يستخدم الواجهة.
- يستغل أي ثقة زيادة حطيتها في الـ Frontend.
هذي النقطة مهمة جدًا:
**أي شيء يجي من المتصفح = غير موثوق.**
حتى لو المستخدم مسجل دخول، وحتى لو الزر مخفي، وحتى لو الـ JavaScript يتحقق من البيانات... الخادم لازم يتحقق من كل شيء مرة ثانية.
هذي القاعدة الذهبية. لو ما استوعبتها، باقي السلسلة ما راح تنفعك كثير.
---
### كيف يفكر المهاجم؟
المهاجم ما يبدأ بـ "أبي أسوي SQL Injection".
يبدأ بأسئلة بسيطة:
- وش اللي يقدر يشوفه المستخدم العادي؟
- وش اللي يقدر يعدله؟
- وش البيانات اللي تمشي بين المتصفح والخادم؟
- وين تتخزن الجلسة؟
- هل في فرق بين اللي يشوفه المستخدم واللي يقدر يرسله فعليًا؟
- هل النظام يثق في الـ Frontend أكثر من اللازم؟
بعدين يبدأ يرسم خريطة ذهنية للتطبيق:
- نقاط الدخول (Login، Search، Upload، API endpoints...)
- التدفقات الحساسة (تغيير كلمة المرور، تحويل فلوس، حذف حساب، عرض بيانات خاصة...)
- العلاقات بين الحسابات (هل أقدر أوصل لبيانات شخص ثاني؟)
هذي العقلية أهم من أي أداة.
---
### المفاهيم الأساسية اللي لازم تكون واضحة 100%
**1. Authentication vs Authorization**
- Authentication = من أنت؟ (تسجيل الدخول)
- Authorization = وش مسموح لك تسوي بعد ما دخلت؟
كثير ناس يخلطون بينهم. يدخلون بحساب عادي ويقدرون يعدلون بيانات أدمن، لأن النظام تحقق من الهوية بس، ونسي الصلاحيات.
**2. الجلسة (Session)**
بعد ما تسجل دخول، النظام يحتاج يعرف إن الطلبات الجاية من نفس الشخص. يستخدم إما:
- Cookie فيه Session ID
- أو Token (JWT غالبًا)
المشكلة تصير لما هالجلسة تكون سهلة السرقة أو سهلة التزوير.
**3. الثقة في البيانات**
كل قيمة تجي من المستخدم (حتى لو كانت مخفية في الصفحة) لازم تتعامل معها كأنها قنبلة. تحقق، نظف، وحدد النوع والطول والقيم المسموحة.
**4. سطح الهجوم (Attack Surface)**
كل نقطة يدخل منها بيانات أو تطلع منها بيانات = سطح هجوم. كل ما زاد السطح، زادت الفرص.
---
### الأخطاء الشائعة اللي تسويها حتى الناس "الخبراء"
- يعتمدون على إخفاء العناصر في الواجهة ويظنون إن هذا حماية.
- يحطون الـ Token في LocalStorage عشان "سهولة الاستخدام".
- يثقون في الـ Frontend في التحقق من الصلاحيات.
- ينسون إن المستخدم يقدر يرسل طلبات بـ Methods ثانية (PUT، DELETE، PATCH...).
- ما يفكرون في سيناريوهات الاستخدام الحقيقية (منطق الأعمال).
هذي الأخطاء ما تظهر في السكانر العادي، لأنها مش ثغرات تقنية كلاسيكية، هي أخطاء تصميم وتفكير.
---
### كيف تبني أساس قوي فعليًا؟
1. افهم HTTP بعمق (الـ Request والـ Response، الـ Headers، الـ Status Codes، الـ Cookies).
2. افتح أدوات المطور (F12) في كل تطبيق تستخدمه، وشوف وش يتخزن في المتصفح.
3. استخدم Burp Suite أو ZAP من أول يوم، مو عشان تسوي هجمات، عشان تشوف الطلبات الحقيقية.
4. ارسم خريطة لأي تطبيق تختبره قبل ما تبدأ ترمي Payloads.
5. اسأل نفسك دائمًا: "لو كنت أنا المطور، وين كنت بثق زيادة عن اللزوم؟"
---
### الخلاصة
الأساسيات مو مرحلة تخلص منها وتعدي.
هي العدسة اللي تشوف فيها كل شيء بعدين.
لو فهمت كيف يشتغل تطبيق الويب من جوه، وكيف يفكر المهاجم، وكيف تبني الثقة بشكل صحيح... وقتها أي ثغرة جديدة راح تكون أسهل عليك بكثير.
هالمقال مو عشان تحفظه.
عشان ترجع له كل ما حسيت إنك ضايع في التفاصيل التقنية.
الأساس القوي هو اللي يخلي الباقي سهل.
خلونا نكمل المسار بهدوء وعمق.

تعليقات