🔰Mastering Python | تعلم لغة البايثون 🔰
🔰 Cyber Attack Team 🔰
🔴تعلم لغة Python درس 001# - مقدمة عن الدورة وما هي لغة Python
#Cyber_Attak_Team
#Mastering_Python
#ElzeroWebSchool
#Cyber_Security
🔰 Cyber Attack Team 🔰
🔴تعلم لغة Python درس 001# - مقدمة عن الدورة وما هي لغة Python
#Cyber_Attak_Team
#Mastering_Python
#ElzeroWebSchool
#Cyber_Security
Forwarded from ethical hacking (H.Sy.o)
SS7_Vulnerabilities_Attacks_V7x Academy.en.ar (1).pdf
2.7 MB
SS7_Vulnerabilities_Attacks_V7x Academy.en.ar.pdf
Forwarded from ethical hacking (H.Sy.o)
كتاب ممتاز يشرح بروتوكول إس إس سفن أو "SS7" إختصارا لـ "Signal System Seven" بشكل مُفصل، حيث يشرح الكتاب أهم الثغرات والتهديدات الأمنية وطرق التنصت علي الرسائل القصيرة والإشارات أو المكالمات
تفاعلو مع المنشورات لتحفيزنا على نشر المزيد 🫶
تفاعلو مع المنشورات لتحفيزنا على نشر المزيد 🫶
🔰Mastering Python | تعلم لغة البايثون 🔰
🔰 Cyber Attack Team 🔰
🔴Learn Python in Arabic #079 - Date And Time Introduction
#Cyber_Attak_Team
#Mastering_Python
#ElzeroWebSchool
#Cyber_Security
🔰 Cyber Attack Team 🔰
🔴Learn Python in Arabic #079 - Date And Time Introduction
#Cyber_Attak_Team
#Mastering_Python
#ElzeroWebSchool
#Cyber_Security
أكيد 👍 هذا فهرس مرتب ومنسق للكتاب بشكل جميل وواضح ليسهل عليك التنقل والفهم:
---
📘 فهرس كتاب Web Hacking Arsenal
🟢 القسم الأول: الأساسيات
1. مقدمة في الويب والمتصفح
HTTP (الطلبات والاستجابات)
Headers والثغرات المرتبطة بها
تطور تطبيقات الويب
الترميز (Encoding)
مكونات المتصفح
سياسات الأمان (SOP, CSP, Cookies, HSTS)
---
🔍 القسم الثاني: الاستطلاع (Recon)
2. جمع المعلومات والاستكشاف
Enumerating IPs و ASN
فحص المنافذ والخدمات
Subdomain Enumeration
اكتشاف Endpoints
رسم Attack Surface
اكتشاف الثغرات تلقائيًا
Cloud Enumeration (مثل AWS)
---
💣 القسم الثالث: هجمات السيرفر
3. Server-Side Injection
SQL Injection (كل الأنواع)
Command Execution (RCE)
Template Injection (SSTI)
NoSQL Injection
---
⚡ القسم الرابع: هجمات المتصفح
4. Client-Side Attacks
XSS (Reflected / Stored / DOM)
تجاوز الحمايات
استغلال XSS (Phishing, Keylogging)
---
🔁 القسم الخامس: التحكم في الطلبات
5. CSRF Attacks
كيفية تنفيذ الهجوم
تجاوز الحماية
SameSite Cookies
---
📂 القسم السادس: هجمات الملفات
6. File System Attacks
Directory Traversal
File Inclusion (LFI/RFI)
File Upload Exploits
---
🔐 القسم السابع: المصادقة والصلاحيات
7. Authentication & Authorization
Brute Force
IDOR
JWT / OAuth / SAML
MFA Bypass
---
🧠 القسم الثامن: منطق التطبيق
8. Business Logic Flaws
التلاعب بالرصيد والمعاملات
Race Conditions
استغلال العمليات الداخلية
---
🌐 القسم التاسع: الهجمات المتقدمة
9. Advanced Attacks
XXE
SSRF
HTTP Request Smuggling
---
🧩 القسم العاشر: Serialization
10. Serialization Attacks
Insecure Deserialization
استغلال PHP / Java / Python / .NET
---
☁️ القسم الحادي عشر: API و Cloud
11. Web Services & Cloud
REST / SOAP / GraphQL
Serverless
Cloud Misconfigurations
---
🧪 القسم الثاني عشر: HTML5
12. HTML5 Attacks
CORS
Web Storage
WebSockets
postMessage
---
🛡️ القسم الثالث عشر: تجاوز الحماية
13. WAF Evasion
اكتشاف WAF
تقنيات تجاوز الحماية
Obfuscation
---
📝 القسم الأخير: التقارير
14. Report Writing
كتابة تقرير Pentest
CVSS
Risk Assessment
عرض النتائج
---
✨ ملاحظة
هذا الفهرس مبني على الصفحات الأولى (جدول المحتويات) في الملف، حيث يعرض جميع الفصول من 1 إلى 14 بشكل منظم.
---
إذا تريد، أقدر أحول هذا الفهرس إلى:
🗺️ خريطة ذهنية (Mind Map)
📅 جدول دراسة يومي
🎯 خطة احتراف Bug Bounty خطوة بخطوة
---
📘 فهرس كتاب Web Hacking Arsenal
🟢 القسم الأول: الأساسيات
1. مقدمة في الويب والمتصفح
HTTP (الطلبات والاستجابات)
Headers والثغرات المرتبطة بها
تطور تطبيقات الويب
الترميز (Encoding)
مكونات المتصفح
سياسات الأمان (SOP, CSP, Cookies, HSTS)
---
🔍 القسم الثاني: الاستطلاع (Recon)
2. جمع المعلومات والاستكشاف
Enumerating IPs و ASN
فحص المنافذ والخدمات
Subdomain Enumeration
اكتشاف Endpoints
رسم Attack Surface
اكتشاف الثغرات تلقائيًا
Cloud Enumeration (مثل AWS)
---
💣 القسم الثالث: هجمات السيرفر
3. Server-Side Injection
SQL Injection (كل الأنواع)
Command Execution (RCE)
Template Injection (SSTI)
NoSQL Injection
---
⚡ القسم الرابع: هجمات المتصفح
4. Client-Side Attacks
XSS (Reflected / Stored / DOM)
تجاوز الحمايات
استغلال XSS (Phishing, Keylogging)
---
🔁 القسم الخامس: التحكم في الطلبات
5. CSRF Attacks
كيفية تنفيذ الهجوم
تجاوز الحماية
SameSite Cookies
---
📂 القسم السادس: هجمات الملفات
6. File System Attacks
Directory Traversal
File Inclusion (LFI/RFI)
File Upload Exploits
---
🔐 القسم السابع: المصادقة والصلاحيات
7. Authentication & Authorization
Brute Force
IDOR
JWT / OAuth / SAML
MFA Bypass
---
🧠 القسم الثامن: منطق التطبيق
8. Business Logic Flaws
التلاعب بالرصيد والمعاملات
Race Conditions
استغلال العمليات الداخلية
---
🌐 القسم التاسع: الهجمات المتقدمة
9. Advanced Attacks
XXE
SSRF
HTTP Request Smuggling
---
🧩 القسم العاشر: Serialization
10. Serialization Attacks
Insecure Deserialization
استغلال PHP / Java / Python / .NET
---
☁️ القسم الحادي عشر: API و Cloud
11. Web Services & Cloud
REST / SOAP / GraphQL
Serverless
Cloud Misconfigurations
---
🧪 القسم الثاني عشر: HTML5
12. HTML5 Attacks
CORS
Web Storage
WebSockets
postMessage
---
🛡️ القسم الثالث عشر: تجاوز الحماية
13. WAF Evasion
اكتشاف WAF
تقنيات تجاوز الحماية
Obfuscation
---
📝 القسم الأخير: التقارير
14. Report Writing
كتابة تقرير Pentest
CVSS
Risk Assessment
عرض النتائج
---
✨ ملاحظة
هذا الفهرس مبني على الصفحات الأولى (جدول المحتويات) في الملف، حيث يعرض جميع الفصول من 1 إلى 14 بشكل منظم.
---
إذا تريد، أقدر أحول هذا الفهرس إلى:
🗺️ خريطة ذهنية (Mind Map)
📅 جدول دراسة يومي
🎯 خطة احتراف Bug Bounty خطوة بخطوة
🧠 أولًا: الخريطة الذهنية (Mind Map)
تخيلها بهذا الشكل (من المركز للخارج):
Web Hacking Arsenal
│
├── 🟢 Basics
│ ├─ HTTP
│ ├─ Browser
│ ├─ Security Policies
│
├── 🔍 Recon
│ ├─ Subdomains
│ ├─ Ports & Services
│ ├─ Attack Surface
│
├── 💣 Server Attacks
│ ├─ SQLi
│ ├─ SSTI
│ ├─ RCE
│
├── ⚡ Client Attacks
│ ├─ XSS
│ ├─ DOM Attacks
│
├── 🔁 CSRF
│
├── 📂 File Attacks
│ ├─ LFI / RFI
│ ├─ Upload
│
├── 🔐 Auth
│ ├─ IDOR
│ ├─ JWT / OAuth
│
├── 🧠 Logic Bugs
│
├── 🌐 Advanced
│ ├─ XXE
│ ├─ SSRF
│ ├─ Smuggling
│
├── 🧩 Serialization
│
├── ☁️ API & Cloud
│
├── 🧪 HTML5
│
├── 🛡️ WAF Bypass
│
└── 📝 Reporting
👉 الفكرة:
كل فرع = مهارة
كل مهارة = تمارين + تطبيق عملي
---
📅 ثانيًا: خطة دراسة 30 يوم 🔥
🟢 الأسبوع 1 (الأساسيات + Recon)
اليوم 1-2
HTTP + Headers
اليوم 3
Browser + SOP + CSP
اليوم 4-5
Subdomain Enumeration
اليوم 6
Port Scanning + Services
اليوم 7
تطبيق عملي (Recon على موقع)
---
⚡ الأسبوع 2 (الهجمات الأساسية)
اليوم 8-9
XSS (Reflected + Stored)
اليوم 10
DOM XSS
اليوم 11
CSRF
اليوم 12-13
File Upload + LFI
اليوم 14
تطبيق عملي (Labs)
---
💣 الأسبوع 3 (الهجمات القوية)
اليوم 15-17
SQL Injection
اليوم 18
SSTI
اليوم 19
RCE
اليوم 20-21
Auth + IDOR + JWT
---
🔴 الأسبوع 4 (الاحتراف)
اليوم 22
Business Logic
اليوم 23
SSRF + XXE
اليوم 24
APIs + GraphQL
اليوم 25
Serialization
اليوم 26
HTML5
اليوم 27
WAF Bypass
اليوم 28
Report Writing
اليوم 29-30
🔥 مشروع عملي (اختبار موقع كامل)
---
🚀 كيف تطبق الخطة صح؟
كل يوم:
📖 اقرأ (30–60 دقيقة)
🧪 طبق (1–2 ساعة)
استخدم:
PortSwigger Labs
TryHackMe
---
🔥 نصيحة مهمة
لو طبقت هذه الخطة بجد: ➡️ خلال شهر واحد ستفهم 70% من مجال Web Hacking
➡️ خلال 3 شهور تقدر تبدأ Bug Bounty فعليًا
تخيلها بهذا الشكل (من المركز للخارج):
Web Hacking Arsenal
│
├── 🟢 Basics
│ ├─ HTTP
│ ├─ Browser
│ ├─ Security Policies
│
├── 🔍 Recon
│ ├─ Subdomains
│ ├─ Ports & Services
│ ├─ Attack Surface
│
├── 💣 Server Attacks
│ ├─ SQLi
│ ├─ SSTI
│ ├─ RCE
│
├── ⚡ Client Attacks
│ ├─ XSS
│ ├─ DOM Attacks
│
├── 🔁 CSRF
│
├── 📂 File Attacks
│ ├─ LFI / RFI
│ ├─ Upload
│
├── 🔐 Auth
│ ├─ IDOR
│ ├─ JWT / OAuth
│
├── 🧠 Logic Bugs
│
├── 🌐 Advanced
│ ├─ XXE
│ ├─ SSRF
│ ├─ Smuggling
│
├── 🧩 Serialization
│
├── ☁️ API & Cloud
│
├── 🧪 HTML5
│
├── 🛡️ WAF Bypass
│
└── 📝 Reporting
👉 الفكرة:
كل فرع = مهارة
كل مهارة = تمارين + تطبيق عملي
---
📅 ثانيًا: خطة دراسة 30 يوم 🔥
🟢 الأسبوع 1 (الأساسيات + Recon)
اليوم 1-2
HTTP + Headers
اليوم 3
Browser + SOP + CSP
اليوم 4-5
Subdomain Enumeration
اليوم 6
Port Scanning + Services
اليوم 7
تطبيق عملي (Recon على موقع)
---
⚡ الأسبوع 2 (الهجمات الأساسية)
اليوم 8-9
XSS (Reflected + Stored)
اليوم 10
DOM XSS
اليوم 11
CSRF
اليوم 12-13
File Upload + LFI
اليوم 14
تطبيق عملي (Labs)
---
💣 الأسبوع 3 (الهجمات القوية)
اليوم 15-17
SQL Injection
اليوم 18
SSTI
اليوم 19
RCE
اليوم 20-21
Auth + IDOR + JWT
---
🔴 الأسبوع 4 (الاحتراف)
اليوم 22
Business Logic
اليوم 23
SSRF + XXE
اليوم 24
APIs + GraphQL
اليوم 25
Serialization
اليوم 26
HTML5
اليوم 27
WAF Bypass
اليوم 28
Report Writing
اليوم 29-30
🔥 مشروع عملي (اختبار موقع كامل)
---
🚀 كيف تطبق الخطة صح؟
كل يوم:
📖 اقرأ (30–60 دقيقة)
🧪 طبق (1–2 ساعة)
استخدم:
PortSwigger Labs
TryHackMe
---
🔥 نصيحة مهمة
لو طبقت هذه الخطة بجد: ➡️ خلال شهر واحد ستفهم 70% من مجال Web Hacking
➡️ خلال 3 شهور تقدر تبدأ Bug Bounty فعليًا
✅ طريقة الشرح اللي راح أستخدمها (بأسلوب عالمي)
لكل Chapter ترسله، راح أقسمه لك بهذا الشكل:
1) 🧠 الفهم النظري (Concept)
شرح الفكرة من الصفر
لماذا هذه الثغرة موجودة؟
كيف يفكر الهاكر؟
---
2) ⚙️ الآلية (How it works)
كيف يعمل الهجوم تقنيًا
شرح خطوة بخطوة
ربطه بـ HTTP / Browser / Server
---
3) 💣 التطبيق (Attack Scenarios)
سيناريوهات حقيقية
أمثلة من الواقع
كيف يتم الاستغلال
---
4) 🛡️ الحماية (Defense)
كيف يتم منع الهجوم
أخطاء المطورين الشائعة
---
5) 🧪 التدريب العملي
تمارين
Labs (مثل PortSwigger)
أفكار للتجربة بنفسك
---
6) 📅 تقسيم الشابتر على أيام
راح أقسم لك كل Chapter إلى:
خطة يومية (2–5 أيام حسب حجمه)
كل يوم فيه:
📖 ماذا تقرأ
🎯 ماذا تفهم
🧪 ماذا تطبق
---
🎯 مثال سريع (كيف راح يكون التقسيم)
مثلاً لو الشابتر عن XSS:
اليوم 1:
الفهم العام + Reflected XSS
اليوم 2:
Stored XSS + DOM XSS
اليوم 3:
Bypass + Advanced Techniques
اليوم 4:
Exploitation (سرقة حسابات)
اليوم 5:
Labs + Practice
---
🔥 مهم جدًا
أنا ما راح: ❌ أختصر بشكل مخل
❌ أشرح بشكل نظري ممل
أنا راح: ✅ أبسّط + أعمّق بنفس الوقت
✅ أربط لك كل شيء بالواقع
✅ أدرّبك تفكر مثل Bug Hunter
لكل Chapter ترسله، راح أقسمه لك بهذا الشكل:
1) 🧠 الفهم النظري (Concept)
شرح الفكرة من الصفر
لماذا هذه الثغرة موجودة؟
كيف يفكر الهاكر؟
---
2) ⚙️ الآلية (How it works)
كيف يعمل الهجوم تقنيًا
شرح خطوة بخطوة
ربطه بـ HTTP / Browser / Server
---
3) 💣 التطبيق (Attack Scenarios)
سيناريوهات حقيقية
أمثلة من الواقع
كيف يتم الاستغلال
---
4) 🛡️ الحماية (Defense)
كيف يتم منع الهجوم
أخطاء المطورين الشائعة
---
5) 🧪 التدريب العملي
تمارين
Labs (مثل PortSwigger)
أفكار للتجربة بنفسك
---
6) 📅 تقسيم الشابتر على أيام
راح أقسم لك كل Chapter إلى:
خطة يومية (2–5 أيام حسب حجمه)
كل يوم فيه:
📖 ماذا تقرأ
🎯 ماذا تفهم
🧪 ماذا تطبق
---
🎯 مثال سريع (كيف راح يكون التقسيم)
مثلاً لو الشابتر عن XSS:
اليوم 1:
الفهم العام + Reflected XSS
اليوم 2:
Stored XSS + DOM XSS
اليوم 3:
Bypass + Advanced Techniques
اليوم 4:
Exploitation (سرقة حسابات)
اليوم 5:
Labs + Practice
---
🔥 مهم جدًا
أنا ما راح: ❌ أختصر بشكل مخل
❌ أشرح بشكل نظري ممل
أنا راح: ✅ أبسّط + أعمّق بنفس الوقت
✅ أربط لك كل شيء بالواقع
✅ أدرّبك تفكر مثل Bug Hunter
الفهرس🔎
📅 خطة دراسة 30 يوم 🔥
🟢 الأسبوع 1 (الأساسيات + Recon)
اليوم 1
HTTP
اليوم 2
Headers
اليوم 3
Browser + SOP + CSP
اليوم 4-5
Subdomain Enumeration
اليوم 6
Port Scanning + Services
اليوم 7
تطبيق عملي (Recon على موقع)
⚡ الأسبوع 2 (الهجمات الأساسية)
اليوم 8-9
XSS (Reflected + Stored)
اليوم 10
DOM XSS
اليوم 11
CSRF
اليوم 12-13
File Upload + LFI
اليوم 14
تطبيق عملي (Labs)
💣 الأسبوع 3 (الهجمات القوية)
اليوم 15-17
SQL Injection
اليوم 18
SSTI
اليوم 19
RCE
اليوم 20-21
Auth + IDOR + JWT
🔴 الأسبوع 4 (الاحتراف)
اليوم 22
Business Logic
اليوم 23
SSRF + XXE
اليوم 24
APIs + GraphQL
اليوم 25
Serialization
اليوم 26
HTML5
اليوم 27
WAF Bypass
اليوم 28
Report Writing
اليوم 29-30
🔥 مشروع عملي (اختبار موقع كامل)
📅 خطة دراسة 30 يوم 🔥
🟢 الأسبوع 1 (الأساسيات + Recon)
اليوم 1
HTTP
اليوم 2
Headers
اليوم 3
Browser + SOP + CSP
اليوم 4-5
Subdomain Enumeration
اليوم 6
Port Scanning + Services
اليوم 7
تطبيق عملي (Recon على موقع)
⚡ الأسبوع 2 (الهجمات الأساسية)
اليوم 8-9
XSS (Reflected + Stored)
اليوم 10
DOM XSS
اليوم 11
CSRF
اليوم 12-13
File Upload + LFI
اليوم 14
تطبيق عملي (Labs)
💣 الأسبوع 3 (الهجمات القوية)
اليوم 15-17
SQL Injection
اليوم 18
SSTI
اليوم 19
RCE
اليوم 20-21
Auth + IDOR + JWT
🔴 الأسبوع 4 (الاحتراف)
اليوم 22
Business Logic
اليوم 23
SSRF + XXE
اليوم 24
APIs + GraphQL
اليوم 25
Serialization
اليوم 26
HTML5
اليوم 27
WAF Bypass
اليوم 28
Report Writing
اليوم 29-30
🔥 مشروع عملي (اختبار موقع كامل)
📅 اليوم 1 — HTTP من الصفر (شرح معماري عميق)
> اليوم الأول ليس “مقدمة بسيطة”.
هذا اليوم هو الأساس الذي ستُبنى عليه كل الثغرات لاحقًا:
XSS
CSRF
SQLi
SSRF
حتى OAuth وJWT
كلها في النهاية تتحرك داخل HTTP.
لذلك سنفهم HTTP كمهندس ومخترق في نفس الوقت.
الجزء الذي نعتمد عليه هنا من بداية Chapter 1 يشرح:
مفهوم HTTP
خصائصه
الطلبات والاستجابات
كيف تنتقل البيانات بين Client وServer
لماذا HTTP صُمم بهذه الطريقة أصلًا
---
1) 🧠 الفهم النظري (Concept)
---
🔹 أولًا: ما هو HTTP فعلًا؟
HTTP اختصار لـ:
> HyperText Transfer Protocol
لكن هذا التعريف لا يشرح شيئًا فعليًا.
لفهم HTTP بعمق، يجب أن نفهم:
> لماذا تم اختراعه أصلًا؟
---
🔹 كيف بدأ الويب تاريخيًا؟
في البداية، الإنترنت لم يكن “تطبيقات” كما نعرف اليوم.
لم يكن هناك:
تسجيل دخول
حسابات
جلسات
APIs
JWT
React
بل كان الهدف الأساسي:
> مشاركة مستندات بين الجامعات ومراكز الأبحاث.
يعني:
شخص يطلب ملف
السيرفر يرسل الملف
مثل:
GET /paper.html
ثم السيرفر:
HTTP/1.1 200 OK
---
🔥 المشكلة الكبرى
HTTP صُمم أصلًا:
> “لنقل المستندات”
لكننا اليوم نستخدمه لـ:
البنوك
المصادقة
المدفوعات
الأنظمة الحساسة
وهنا بدأت المشاكل الأمنية.
---
🔹 لماذا؟
لأن التصميم الأصلي لـ HTTP:
بسيط جدًا
عديم الحالة (Stateless)
نصي (Text-based)
قابل للتعديل بالكامل
---
🔹 ماذا يعني Text-Based؟
يعني أن HTTP ليس Binary معقدًا.
بل مجرد:
> نص يمكن قراءته وتعديله بسهولة
مثل:
GET / HTTP/1.1
Host: example.com
---
🔥 لماذا هذا مهم جدًا أمنيًا؟
لأن أي شخص يستطيع:
قراءة الطلب
تعديله
إعادة إرساله
ولهذا:
> الويب بطبيعته “بيئة غير موثوقة”
---
🔹 الآن أهم نقطة في اليوم كله
المستخدم العادي يرى:
زر
صفحة
نموذج
لكن السيرفر لا يرى شيئًا من ذلك.
السيرفر يرى فقط:
Request Text
---
🧠 كيف يفكر الهاكر؟
المستخدم:
> "ضغطت زر تسجيل دخول"
الهاكر:
> "تم إرسال POST Request"
المستخدم:
> "هذه صفحة ملفي الشخصي"
الهاكر:
> "هذا endpoint يستقبل id"
---
🔥 إذن ما هو الاختراق الحقيقي؟
في أغلب اختراقات الويب:
> أنت لا “تكسر الموقع”
بل:
> تغيّر طريقة فهم السيرفر للطلب
---
🔹 مفهوم Stateless (عميق جدًا)
الكتاب يذكر أن HTTP:
> Stateless Protocol
لكن ما معنى ذلك فعليًا؟
---
🧠 المعنى الحقيقي
السيرفر:
> لا يتذكر أي شيء بين الطلبات
كل Request مستقل تمامًا.
---
🔥 مثال واقعي
إذا أرسلت:
GET /profile
ثم بعد ثانية:
GET /settings
السيرفر لا يعرف أن:
نفس الشخص أرسل الطلبين
إلا إذا تم إثبات ذلك
---
🔥 كيف حُلّت هذه المشكلة؟
تم اختراع:
Cookies
Sessions
Tokens
وهذه ليست جزءًا أصليًا من HTTP.
بل:
> حلول إضافية فوق بروتوكول بسيط لم يُصمم للحالة (State).
---
🔥 وهنا تبدأ كمية هائلة من الثغرات
لأن:
HTTP لا يعرف المستخدم
نحن نحاول “إجباره” على تذكر المستخدم
ومن هنا ظهرت:
Session Hijacking
CSRF
Cookie Attacks
---
🔹 خاصية أخرى مهمة: HTTP غير مشفر
الكتاب يذكر أن HTTP:
> لا يحتوي تشفيرًا داخليًا
---
🧠 ماذا يعني هذا؟
أي جهاز في الطريق يمكنه رؤية البيانات:
Router
ISP
Proxy
أي شخص على الشبكة
---
🔥 لذلك ظهر HTTPS
HTTPS ليس بروتوكولًا جديدًا بالكامل.
بل:
> HTTP داخل طبقة TLS/SSL
يعني:
HTTP + Encryption = HTTPS
---
🔥 لماذا هذا مهم جدًا أمنيًا؟
بدون HTTPS:
كلمات المرور مكشوفة
الكوكيز مكشوفة
التوكنات مكشوفة
---
2) ⚙️ الآلية (How it works — Deep Architecture)
---
🔹 ماذا يحدث عندما تفتح موقعًا؟
عندما تكتب:
google.com
أنت لا “تذهب لموقع”.
بل تبدأ سلسلة معقدة جدًا.
---
🧩 المرحلة 1 — DNS
المتصفح لا يفهم:
google.com
بل يحتاج:
142.250.xxx.xxx
لذلك يسأل DNS.
---
🧩 المرحلة 2 — إنشاء الاتصال
يبدأ TCP Handshake.
لماذا؟ لأن HTTP يعتمد على TCP.
---
🔥 لماذا TCP مهم؟
لأن TCP:
يضمن الترتيب
يمنع فقدان البيانات
يضمن وصول الحزم
---
🧩 المرحلة 3 — بناء HTTP Request
الآن المتصفح يبني الطلب.
---
🔬 تحليل حقيقي للطلب
من الكتاب:
GET /index.html HTTP/1.1
Host: www.redseclabs.com
User-Agent: Mozilla/5.0
Referer: https://google.com
---
🔍 السطر الأول
GET /index.html HTTP/1.1
هذا يسمى:
> Request Line
---
🔹 GET
نوع العملية (Method)
---
🔹 /index.html
المورد المطلوب
---
🔹 HTTP/1.1
نسخة البروتوكول
---
🔥 نقطة احترافية
السيرفر لا يعرف:
هل هذا زر؟
هل هذا فورم؟
بل يعرف فقط:
Method + Path
---
🔍 Host Header
> اليوم الأول ليس “مقدمة بسيطة”.
هذا اليوم هو الأساس الذي ستُبنى عليه كل الثغرات لاحقًا:
XSS
CSRF
SQLi
SSRF
حتى OAuth وJWT
كلها في النهاية تتحرك داخل HTTP.
لذلك سنفهم HTTP كمهندس ومخترق في نفس الوقت.
الجزء الذي نعتمد عليه هنا من بداية Chapter 1 يشرح:
مفهوم HTTP
خصائصه
الطلبات والاستجابات
كيف تنتقل البيانات بين Client وServer
لماذا HTTP صُمم بهذه الطريقة أصلًا
---
1) 🧠 الفهم النظري (Concept)
---
🔹 أولًا: ما هو HTTP فعلًا؟
HTTP اختصار لـ:
> HyperText Transfer Protocol
لكن هذا التعريف لا يشرح شيئًا فعليًا.
لفهم HTTP بعمق، يجب أن نفهم:
> لماذا تم اختراعه أصلًا؟
---
🔹 كيف بدأ الويب تاريخيًا؟
في البداية، الإنترنت لم يكن “تطبيقات” كما نعرف اليوم.
لم يكن هناك:
تسجيل دخول
حسابات
جلسات
APIs
JWT
React
بل كان الهدف الأساسي:
> مشاركة مستندات بين الجامعات ومراكز الأبحاث.
يعني:
شخص يطلب ملف
السيرفر يرسل الملف
مثل:
GET /paper.html
ثم السيرفر:
HTTP/1.1 200 OK
---
🔥 المشكلة الكبرى
HTTP صُمم أصلًا:
> “لنقل المستندات”
لكننا اليوم نستخدمه لـ:
البنوك
المصادقة
المدفوعات
الأنظمة الحساسة
وهنا بدأت المشاكل الأمنية.
---
🔹 لماذا؟
لأن التصميم الأصلي لـ HTTP:
بسيط جدًا
عديم الحالة (Stateless)
نصي (Text-based)
قابل للتعديل بالكامل
---
🔹 ماذا يعني Text-Based؟
يعني أن HTTP ليس Binary معقدًا.
بل مجرد:
> نص يمكن قراءته وتعديله بسهولة
مثل:
GET / HTTP/1.1
Host: example.com
---
🔥 لماذا هذا مهم جدًا أمنيًا؟
لأن أي شخص يستطيع:
قراءة الطلب
تعديله
إعادة إرساله
ولهذا:
> الويب بطبيعته “بيئة غير موثوقة”
---
🔹 الآن أهم نقطة في اليوم كله
المستخدم العادي يرى:
زر
صفحة
نموذج
لكن السيرفر لا يرى شيئًا من ذلك.
السيرفر يرى فقط:
Request Text
---
🧠 كيف يفكر الهاكر؟
المستخدم:
> "ضغطت زر تسجيل دخول"
الهاكر:
> "تم إرسال POST Request"
المستخدم:
> "هذه صفحة ملفي الشخصي"
الهاكر:
> "هذا endpoint يستقبل id"
---
🔥 إذن ما هو الاختراق الحقيقي؟
في أغلب اختراقات الويب:
> أنت لا “تكسر الموقع”
بل:
> تغيّر طريقة فهم السيرفر للطلب
---
🔹 مفهوم Stateless (عميق جدًا)
الكتاب يذكر أن HTTP:
> Stateless Protocol
لكن ما معنى ذلك فعليًا؟
---
🧠 المعنى الحقيقي
السيرفر:
> لا يتذكر أي شيء بين الطلبات
كل Request مستقل تمامًا.
---
🔥 مثال واقعي
إذا أرسلت:
GET /profile
ثم بعد ثانية:
GET /settings
السيرفر لا يعرف أن:
نفس الشخص أرسل الطلبين
إلا إذا تم إثبات ذلك
---
🔥 كيف حُلّت هذه المشكلة؟
تم اختراع:
Cookies
Sessions
Tokens
وهذه ليست جزءًا أصليًا من HTTP.
بل:
> حلول إضافية فوق بروتوكول بسيط لم يُصمم للحالة (State).
---
🔥 وهنا تبدأ كمية هائلة من الثغرات
لأن:
HTTP لا يعرف المستخدم
نحن نحاول “إجباره” على تذكر المستخدم
ومن هنا ظهرت:
Session Hijacking
CSRF
Cookie Attacks
---
🔹 خاصية أخرى مهمة: HTTP غير مشفر
الكتاب يذكر أن HTTP:
> لا يحتوي تشفيرًا داخليًا
---
🧠 ماذا يعني هذا؟
أي جهاز في الطريق يمكنه رؤية البيانات:
Router
ISP
Proxy
أي شخص على الشبكة
---
🔥 لذلك ظهر HTTPS
HTTPS ليس بروتوكولًا جديدًا بالكامل.
بل:
> HTTP داخل طبقة TLS/SSL
يعني:
HTTP + Encryption = HTTPS
---
🔥 لماذا هذا مهم جدًا أمنيًا؟
بدون HTTPS:
كلمات المرور مكشوفة
الكوكيز مكشوفة
التوكنات مكشوفة
---
2) ⚙️ الآلية (How it works — Deep Architecture)
---
🔹 ماذا يحدث عندما تفتح موقعًا؟
عندما تكتب:
google.com
أنت لا “تذهب لموقع”.
بل تبدأ سلسلة معقدة جدًا.
---
🧩 المرحلة 1 — DNS
المتصفح لا يفهم:
google.com
بل يحتاج:
142.250.xxx.xxx
لذلك يسأل DNS.
---
🧩 المرحلة 2 — إنشاء الاتصال
يبدأ TCP Handshake.
لماذا؟ لأن HTTP يعتمد على TCP.
---
🔥 لماذا TCP مهم؟
لأن TCP:
يضمن الترتيب
يمنع فقدان البيانات
يضمن وصول الحزم
---
🧩 المرحلة 3 — بناء HTTP Request
الآن المتصفح يبني الطلب.
---
🔬 تحليل حقيقي للطلب
من الكتاب:
GET /index.html HTTP/1.1
Host: www.redseclabs.com
User-Agent: Mozilla/5.0
Referer: https://google.com
---
🔍 السطر الأول
GET /index.html HTTP/1.1
هذا يسمى:
> Request Line
---
🔹 GET
نوع العملية (Method)
---
🔹 /index.html
المورد المطلوب
---
🔹 HTTP/1.1
نسخة البروتوكول
---
🔥 نقطة احترافية
السيرفر لا يعرف:
هل هذا زر؟
هل هذا فورم؟
بل يعرف فقط:
Method + Path
---
🔍 Host Header
Host: www.redseclabs.com
---
🧠 لماذا أُضيف Host أصلًا؟
قديمًا:
كل IP = موقع واحد
لكن لاحقًا:
IP واحد يستضيف آلاف المواقع
كيف يميز السيرفر؟
عبر:
Host
---
🔥 الآن بدأت المشاكل الأمنية
لأن السيرفر:
> بدأ يعتمد على قيمة يرسلها المستخدم
ومن هنا ظهرت:
Host Header Injection
Password Reset Poisoning
---
🔍 User-Agent
User-Agent: Mozilla/5.0
---
🧠 لماذا وُجد؟
لأن المواقع احتاجت معرفة:
نوع المتصفح
النظام
التوافق
---
🔥 لكن المشكلة
هو مجرد:
> String يمكن تزويره بالكامل
---
🔍 Referer
Referer: https://google.com
---
🧠 لماذا وُجد؟
لإخبار السيرفر:
> من أين جاء المستخدم
---
🔥 لماذا أصبح خطيرًا؟
لأنه قد يسرّب:
tokens
sessions
reset links
---
🧩 المرحلة 4 — السيرفر يرد
مثال من الكتاب:
HTTP/1.1 200 OK
Server: Apache/2.4.41
Content-Type: text/html
---
🔥 هنا يبدأ تفكير الهاكر
Server: Apache/2.4.41
هذه ليست “معلومة بريئة”.
بل:
> بصمة تقنية (Fingerprint)
---
🧠 ماذا يفعل الهاكر؟
يبحث:
هل هذا الإصدار قديم؟
هل له CVE؟
هل يوجد Exploit؟
---
3) 💣 التطبيق (Attack Scenarios — Real Security Thinking)
---
🔥 سيناريو 1 — البيانات في GET
GET /login?user=admin&pass=123
---
🔬 لماذا هذا كارثي؟
لأن Query String:
تُخزن
تُسجل
تُشارك
---
🔥 أين؟
1️⃣ Browser History
المتصفح يحفظ الرابط كاملًا.
---
2️⃣ Server Logs
السيرفر يسجل الطلب.
---
3️⃣ Referer Leakage
إذا خرج المستخدم لموقع آخر: قد يُرسل الرابط كاملًا.
---
🔥 السيناريو الحقيقي
موقع:
/reset?token=ABC123
ثم المستخدم يضغط إعلان خارجي.
المتصفح قد يرسل:
Referer: https://site.com/reset?token=ABC123
💥 انتهى الأمر.
---
🔥 سيناريو 2 — الاعتماد على User-Agent
تطبيق:
if User-Agent == mobile
الهاكر:
User-Agent: iPhone
💥 bypass
---
🔥 سيناريو 3 — معلومات السيرفر
Server: Apache/2.4.41
الهاكر:
يبحث عن ثغرات لهذا الإصدار
---
4) 🛡️ الحماية (Defense — Architectural Thinking)
---
🔐 1) Treat Everything as Untrusted
أي شيء يأتي من:
Request
Header
Parameter
❌ غير موثوق
---
🔐 2) لا تضع Secrets في URL
أبدًا.
---
🔐 3) استخدم HTTPS دائمًا
لأن HTTP:
> غير آمن بطبيعته
---
🔐 4) قلل المعلومات
لا تعرض:
الإصدارات
التفاصيل الداخلية
---
🔐 5) افهم أن الواجهة ليست حماية
JavaScript: ❌ ليس Security Boundary
---
5) 🧪 التدريب العملي (احترافي)
---
🧪 تمرين 1 — رؤية HTTP الحقيقي
افتح:
DevTools
Network
راقب:
Method
Headers
Response
---
🧪 تمرين 2 — التفكير كهاكر
لكل Request اسأل:
ماذا لو غيرته؟
هل يتحقق السيرفر؟
---
🧪 تمرين 3 — تحليل معماري
خذ أي موقع واسأل:
أين تُخزن البيانات؟
هل هناك GET حساس؟
هل يوجد معلومات في headers؟
---
🧠 خلاصة اليوم (الفهم الحقيقي)
اليوم الأول ليس عن “HTTP فقط”.
بل عن:
> كيف صُمم الويب أصلًا، ولماذا أدى هذا التصميم إلى ظهور الثغرات الحديثة.
---
🎯 أهم فكرة في اليوم كله
> "معظم اختراقات الويب ليست كسرًا للتشفير… بل استغلال لطريقة فهم السيرفر للطلبات."
---
🧠 لماذا أُضيف Host أصلًا؟
قديمًا:
كل IP = موقع واحد
لكن لاحقًا:
IP واحد يستضيف آلاف المواقع
كيف يميز السيرفر؟
عبر:
Host
---
🔥 الآن بدأت المشاكل الأمنية
لأن السيرفر:
> بدأ يعتمد على قيمة يرسلها المستخدم
ومن هنا ظهرت:
Host Header Injection
Password Reset Poisoning
---
🔍 User-Agent
User-Agent: Mozilla/5.0
---
🧠 لماذا وُجد؟
لأن المواقع احتاجت معرفة:
نوع المتصفح
النظام
التوافق
---
🔥 لكن المشكلة
هو مجرد:
> String يمكن تزويره بالكامل
---
🔍 Referer
Referer: https://google.com
---
🧠 لماذا وُجد؟
لإخبار السيرفر:
> من أين جاء المستخدم
---
🔥 لماذا أصبح خطيرًا؟
لأنه قد يسرّب:
tokens
sessions
reset links
---
🧩 المرحلة 4 — السيرفر يرد
مثال من الكتاب:
HTTP/1.1 200 OK
Server: Apache/2.4.41
Content-Type: text/html
---
🔥 هنا يبدأ تفكير الهاكر
Server: Apache/2.4.41
هذه ليست “معلومة بريئة”.
بل:
> بصمة تقنية (Fingerprint)
---
🧠 ماذا يفعل الهاكر؟
يبحث:
هل هذا الإصدار قديم؟
هل له CVE؟
هل يوجد Exploit؟
---
3) 💣 التطبيق (Attack Scenarios — Real Security Thinking)
---
🔥 سيناريو 1 — البيانات في GET
GET /login?user=admin&pass=123
---
🔬 لماذا هذا كارثي؟
لأن Query String:
تُخزن
تُسجل
تُشارك
---
🔥 أين؟
1️⃣ Browser History
المتصفح يحفظ الرابط كاملًا.
---
2️⃣ Server Logs
السيرفر يسجل الطلب.
---
3️⃣ Referer Leakage
إذا خرج المستخدم لموقع آخر: قد يُرسل الرابط كاملًا.
---
🔥 السيناريو الحقيقي
موقع:
/reset?token=ABC123
ثم المستخدم يضغط إعلان خارجي.
المتصفح قد يرسل:
Referer: https://site.com/reset?token=ABC123
💥 انتهى الأمر.
---
🔥 سيناريو 2 — الاعتماد على User-Agent
تطبيق:
if User-Agent == mobile
الهاكر:
User-Agent: iPhone
💥 bypass
---
🔥 سيناريو 3 — معلومات السيرفر
Server: Apache/2.4.41
الهاكر:
يبحث عن ثغرات لهذا الإصدار
---
4) 🛡️ الحماية (Defense — Architectural Thinking)
---
🔐 1) Treat Everything as Untrusted
أي شيء يأتي من:
Request
Header
Parameter
❌ غير موثوق
---
🔐 2) لا تضع Secrets في URL
أبدًا.
---
🔐 3) استخدم HTTPS دائمًا
لأن HTTP:
> غير آمن بطبيعته
---
🔐 4) قلل المعلومات
لا تعرض:
الإصدارات
التفاصيل الداخلية
---
🔐 5) افهم أن الواجهة ليست حماية
JavaScript: ❌ ليس Security Boundary
---
5) 🧪 التدريب العملي (احترافي)
---
🧪 تمرين 1 — رؤية HTTP الحقيقي
افتح:
DevTools
Network
راقب:
Method
Headers
Response
---
🧪 تمرين 2 — التفكير كهاكر
لكل Request اسأل:
ماذا لو غيرته؟
هل يتحقق السيرفر؟
---
🧪 تمرين 3 — تحليل معماري
خذ أي موقع واسأل:
أين تُخزن البيانات؟
هل هناك GET حساس؟
هل يوجد معلومات في headers؟
---
🧠 خلاصة اليوم (الفهم الحقيقي)
اليوم الأول ليس عن “HTTP فقط”.
بل عن:
> كيف صُمم الويب أصلًا، ولماذا أدى هذا التصميم إلى ظهور الثغرات الحديثة.
---
🎯 أهم فكرة في اليوم كله
> "معظم اختراقات الويب ليست كسرًا للتشفير… بل استغلال لطريقة فهم السيرفر للطلبات."
📅 اليوم 2 — HTTP Methods & Headers (شرح معماري وهجومي عميق)
> اليوم الأول فهمنا فيه:
لماذا HTTP صُمم بهذه الطريقة
كيف يتحرك الطلب
كيف يرى السيرفر العالم
اليوم الثاني سندخل إلى: 🔥 “الطبقة التي يعتمد عليها التطبيق لاتخاذ القرارات”
وهي:
Methods
Headers
وهذا اليوم مهم جدًا لأن كثيرًا من:
Logic Bugs
Authentication bypasses
Cache Poisoning
Password Reset Poisoning
Access Control flaws
تبدأ من سوء فهم هذه الطبقة.
الكتاب في هذا الجزء يشرح:
خصائص HTTP methods
الفرق بين GET وPOST
خطورة وضع البيانات الحساسة داخل URL
الهيدرز المختلفة مثل Host وReferer وUser-Agent
وكيف تؤدي إلى مشاكل أمنية عند الثقة بها بشكل خاطئ
---
1) 🧠 الفهم النظري (Concept)
---
🔹 أولًا: ما هي HTTP Methods فعلًا؟
في الشرح السطحي يُقال:
GET = جلب بيانات
POST = إرسال بيانات
لكن هذا ليس الفهم الحقيقي.
---
🔥 الفهم الحقيقي
HTTP Methods ليست “تعليمات برمجية”.
بل:
> “إشارات Intent” يخبر بها العميل السيرفر ماذا يريد أن يفعل.
مثلًا:
GET /profile
المعنى المنطقي:
> “أريد قراءة profile”
---
POST /profile
المعنى:
> “أريد إرسال/تعديل بيانات”
---
🔥 لكن هنا المشكلة الكبيرة
HTTP نفسه:
> لا يفرض هذه المعاني
يعني:
يمكن أن تجعل GET يحذف بيانات
ويمكن أن تجعل POST يقرأ فقط
---
🧠 إذن أين تأتي القواعد؟
من:
المطور
Framework
Convention
وليس من HTTP نفسه.
---
🔥 لماذا هذا مهم أمنيًا؟
لأن كثيرًا من المطورين يخلط بين:
> “المعنى المتوقع” و “السلوك الحقيقي”
---
🔥 مثال خطير جدًا
المطور يعتقد:
GET = آمن
فيقوم بكتابة:
GET /deleteUser?id=5
---
💣 ما المشكلة؟
لأن GET:
يمكن فتحه عبر رابط
يمكن عمل preload له
يمكن أن يزوره المتصفح تلقائيًا
يمكن تضمينه داخل img/script
---
🔥 الآن بدأت مشاكل مثل:
CSRF
Accidental Actions
Unsafe State Changes
---
🔹 ثانيًا: ما هي Headers معماريًا؟
الشرح السطحي:
> “معلومات إضافية”
لكن الحقيقة:
Headers هي:
> طبقة Metadata تتحكم بكيفية تفسير الطلب والرد.
---
🧠 ماذا يعني Metadata؟
يعني:
معلومات عن البيانات
وليس البيانات نفسها
مثل:
من أرسل؟
من أين جاء؟
ماذا يقبل؟
ما نوع المحتوى؟
كيف يجب تفسيره؟
---
🔥 لماذا هذا مهم جدًا؟
لأن التطبيق يبدأ بالاعتماد عليها لاتخاذ قرارات.
---
🔥 وهنا أصل المشكلة
Headers:
تبدو “رسمية”
لكنها تأتي من المستخدم
---
🧠 التناقض الخطير
السيرفر يتعامل معها أحيانًا كأنها:
> Trusted Context
لكنها فعليًا:
> User Input
---
🔥 وهذا أصل كمية ضخمة من الثغرات الحديثة.
---
2) ⚙️ الآلية (How it works — Deep Technical Analysis)
---
🔹 تحليل GET بعمق
مثال الكتاب:
GET /login.php?username=myusername&password=mypassword HTTP/1.1
---
🔬 ماذا يحدث فعليًا هنا؟
البيانات أصبحت جزءًا من:
URL
---
🔥 لماذا هذا خطير جدًا معماريًا؟
لأن الويب كله بُني على افتراض أن:
> URL يمثل “موردًا” يمكن:
حفظه
مشاركته
تخزينه
عمل Cache له
---
🔥 إذن عندما تضع Secret داخل URL:
أنت فعليًا:
> تُدخل السر داخل بنية الويب نفسها
---
🔬 أين ينتشر هذا السر؟
---
1️⃣ Browser History
المتصفح يحفظ:
/login?username=...&password=...
---
2️⃣ Server Logs
Apache/Nginx غالبًا يسجل الطلب كاملًا.
---
3️⃣ Reverse Proxies
مثل:
Cloudflare
Nginx
CDN
قد تسجل الطلبات.
---
4️⃣ Analytics Platforms
قد تقرأ URLs.
---
5️⃣ Referer Leakage
وهذه أخطر نقطة غالبًا.
إذا زار المستخدم:
/reset?token=ABC
ثم خرج إلى:
facebook.com
قد يرسل المتصفح:
Referer: https://site.com/reset?token=ABC
💥 الآن التوكن خرج خارج النظام.
---
🔹 POST (الفهم الحقيقي)
مثال:
POST /login.php HTTP/1.1
username=admin&password=123
---
🔬 لماذا POST “أفضل”؟
ليس لأنه:
> آمن
بل لأن:
> Body لا يُعامل كبنية URL
---
🔥 ماذا يعني ذلك؟
عادة:
لا يدخل history
لا يُستخدم cache key
لا يُرسل في Referer
---
❗ لكن انتبه
POST:
ما زال قابلًا للاعتراض
ما زال قابلًا للتعديل
ما زال يُقرأ داخل السيرفر
---
🔥 أهم نقطة
الفرق بين:
GET
POST
ليس:
> Security
بل:
> How the web ecosystem treats the data
---
🔹 تحليل Headers بعمق
---
🔍 Host Header
Host: example.com
---
🧠 لماذا أُضيف؟
قديمًا:
IP واحد = موقع واحد
لاحقًا:
Virtual Hosting
فأصبح:
IP واحد = آلاف المواقع
---
🔥 إذن Host أصبح:
> طريقة اختيار التطبيق داخل السيرفر
---
💣 المشكلة الأمنية
المطور بدأ يستخدم Host في:
> اليوم الأول فهمنا فيه:
لماذا HTTP صُمم بهذه الطريقة
كيف يتحرك الطلب
كيف يرى السيرفر العالم
اليوم الثاني سندخل إلى: 🔥 “الطبقة التي يعتمد عليها التطبيق لاتخاذ القرارات”
وهي:
Methods
Headers
وهذا اليوم مهم جدًا لأن كثيرًا من:
Logic Bugs
Authentication bypasses
Cache Poisoning
Password Reset Poisoning
Access Control flaws
تبدأ من سوء فهم هذه الطبقة.
الكتاب في هذا الجزء يشرح:
خصائص HTTP methods
الفرق بين GET وPOST
خطورة وضع البيانات الحساسة داخل URL
الهيدرز المختلفة مثل Host وReferer وUser-Agent
وكيف تؤدي إلى مشاكل أمنية عند الثقة بها بشكل خاطئ
---
1) 🧠 الفهم النظري (Concept)
---
🔹 أولًا: ما هي HTTP Methods فعلًا؟
في الشرح السطحي يُقال:
GET = جلب بيانات
POST = إرسال بيانات
لكن هذا ليس الفهم الحقيقي.
---
🔥 الفهم الحقيقي
HTTP Methods ليست “تعليمات برمجية”.
بل:
> “إشارات Intent” يخبر بها العميل السيرفر ماذا يريد أن يفعل.
مثلًا:
GET /profile
المعنى المنطقي:
> “أريد قراءة profile”
---
POST /profile
المعنى:
> “أريد إرسال/تعديل بيانات”
---
🔥 لكن هنا المشكلة الكبيرة
HTTP نفسه:
> لا يفرض هذه المعاني
يعني:
يمكن أن تجعل GET يحذف بيانات
ويمكن أن تجعل POST يقرأ فقط
---
🧠 إذن أين تأتي القواعد؟
من:
المطور
Framework
Convention
وليس من HTTP نفسه.
---
🔥 لماذا هذا مهم أمنيًا؟
لأن كثيرًا من المطورين يخلط بين:
> “المعنى المتوقع” و “السلوك الحقيقي”
---
🔥 مثال خطير جدًا
المطور يعتقد:
GET = آمن
فيقوم بكتابة:
GET /deleteUser?id=5
---
💣 ما المشكلة؟
لأن GET:
يمكن فتحه عبر رابط
يمكن عمل preload له
يمكن أن يزوره المتصفح تلقائيًا
يمكن تضمينه داخل img/script
---
🔥 الآن بدأت مشاكل مثل:
CSRF
Accidental Actions
Unsafe State Changes
---
🔹 ثانيًا: ما هي Headers معماريًا؟
الشرح السطحي:
> “معلومات إضافية”
لكن الحقيقة:
Headers هي:
> طبقة Metadata تتحكم بكيفية تفسير الطلب والرد.
---
🧠 ماذا يعني Metadata؟
يعني:
معلومات عن البيانات
وليس البيانات نفسها
مثل:
من أرسل؟
من أين جاء؟
ماذا يقبل؟
ما نوع المحتوى؟
كيف يجب تفسيره؟
---
🔥 لماذا هذا مهم جدًا؟
لأن التطبيق يبدأ بالاعتماد عليها لاتخاذ قرارات.
---
🔥 وهنا أصل المشكلة
Headers:
تبدو “رسمية”
لكنها تأتي من المستخدم
---
🧠 التناقض الخطير
السيرفر يتعامل معها أحيانًا كأنها:
> Trusted Context
لكنها فعليًا:
> User Input
---
🔥 وهذا أصل كمية ضخمة من الثغرات الحديثة.
---
2) ⚙️ الآلية (How it works — Deep Technical Analysis)
---
🔹 تحليل GET بعمق
مثال الكتاب:
GET /login.php?username=myusername&password=mypassword HTTP/1.1
---
🔬 ماذا يحدث فعليًا هنا؟
البيانات أصبحت جزءًا من:
URL
---
🔥 لماذا هذا خطير جدًا معماريًا؟
لأن الويب كله بُني على افتراض أن:
> URL يمثل “موردًا” يمكن:
حفظه
مشاركته
تخزينه
عمل Cache له
---
🔥 إذن عندما تضع Secret داخل URL:
أنت فعليًا:
> تُدخل السر داخل بنية الويب نفسها
---
🔬 أين ينتشر هذا السر؟
---
1️⃣ Browser History
المتصفح يحفظ:
/login?username=...&password=...
---
2️⃣ Server Logs
Apache/Nginx غالبًا يسجل الطلب كاملًا.
---
3️⃣ Reverse Proxies
مثل:
Cloudflare
Nginx
CDN
قد تسجل الطلبات.
---
4️⃣ Analytics Platforms
قد تقرأ URLs.
---
5️⃣ Referer Leakage
وهذه أخطر نقطة غالبًا.
إذا زار المستخدم:
/reset?token=ABC
ثم خرج إلى:
facebook.com
قد يرسل المتصفح:
Referer: https://site.com/reset?token=ABC
💥 الآن التوكن خرج خارج النظام.
---
🔹 POST (الفهم الحقيقي)
مثال:
POST /login.php HTTP/1.1
username=admin&password=123
---
🔬 لماذا POST “أفضل”؟
ليس لأنه:
> آمن
بل لأن:
> Body لا يُعامل كبنية URL
---
🔥 ماذا يعني ذلك؟
عادة:
لا يدخل history
لا يُستخدم cache key
لا يُرسل في Referer
---
❗ لكن انتبه
POST:
ما زال قابلًا للاعتراض
ما زال قابلًا للتعديل
ما زال يُقرأ داخل السيرفر
---
🔥 أهم نقطة
الفرق بين:
GET
POST
ليس:
> Security
بل:
> How the web ecosystem treats the data
---
🔹 تحليل Headers بعمق
---
🔍 Host Header
Host: example.com
---
🧠 لماذا أُضيف؟
قديمًا:
IP واحد = موقع واحد
لاحقًا:
Virtual Hosting
فأصبح:
IP واحد = آلاف المواقع
---
🔥 إذن Host أصبح:
> طريقة اختيار التطبيق داخل السيرفر
---
💣 المشكلة الأمنية
المطور بدأ يستخدم Host في:
بناء الروابط
redirects
reset links
---
🔥 مثال خطير جدًا
التطبيق:
resetLink = "https://" + Host + "/reset?token=XYZ"
الهاكر:
Host: evil.com
---
💥 النتيجة
الرابط يصبح:
https://evil.com/reset?token=XYZ
---
🔥 الآن:
الضحية تستلم الرابط
تضغط
التوكن يذهب للمهاجم
---
🔥 هذا يسمى:
Password Reset Poisoning
---
🔍 User-Agent
User-Agent: Mozilla/5.0
---
🧠 لماذا وُجد؟
لكي يعرف السيرفر:
نوع المتصفح
النظام
التوافق
---
💣 المشكلة
هو مجرد:
String
---
🔥 أي شخص يستطيع:
User-Agent: iPhone
---
🔥 لماذا هذا مهم؟
بعض الأنظمة:
تعطي صلاحيات
تخفي خصائص
تغير behavior
اعتمادًا عليه.
---
🔍 Referer
Referer: https://google.com
---
🧠 لماذا أُضيف؟
لإخبار الموقع:
> من أين جاء المستخدم
---
🔥 المشكلة
يمكن أن يحتوي:
Tokens
Secrets
Session IDs
---
💣 وعند الانتقال لموقع آخر:
قد يتم تسريبه.
---
3) 💣 التطبيق (Real Attack Scenarios)
---
🔥 سيناريو 1 — GET State Change
GET /deleteAccount
---
💣 لماذا خطير؟
لأن:
المتصفح قد يزور الرابط تلقائيًا
صورة مخفية قد تستدعيه
crawler قد يفتحه
---
🔥 النتيجة
حذف الحساب بدون قصد.
---
🔥 سيناريو 2 — Host Header Injection
المهاجم:
Host: evil.com
التطبيق:
يبني reset link
---
💥 النتيجة
سرقة حساب.
---
🔥 سيناريو 3 — Referer Leakage
رابط reset يحتوي token.
المستخدم يخرج لموقع خارجي.
---
💥 النتيجة
التوكن يتسرب.
---
🔥 سيناريو 4 — User-Agent Trust
النظام:
if User-Agent == internal
---
💥 bypass
---
4) 🛡️ الحماية (Defense — Deep Defensive Thinking)
---
🔐 1) Treat Headers as User Input
أي Header: ❌ غير موثوق
---
🔐 2) Never Put Secrets in URLs
أبدًا.
---
🔐 3) Validate Host Header
whitelist
canonical host
---
🔐 4) استخدم Referrer-Policy
مثل:
Referrer-Policy: strict-origin-when-cross-origin
---
🔐 5) لا تعتمد على User-Agent أمنيًا
---
🔐 6) GET يجب ألا يغير State
هذه نقطة معمارية مهمة جدًا.
---
5) 🧪 التدريب العملي (Professional Labs)
---
🧪 تمرين 1 — تحليل Requests
افتح DevTools:
راقب Headers
راقب Methods
---
🧪 تمرين 2 — Burp Suite
غيّر:
Host
Referer
User-Agent
وراقب behavior.
---
🧪 تمرين 3 — تفكير معماري
لكل Request اسأل:
هل هذه البيانات يجب أن تكون في URL؟
هل هناك secret؟
هل يعتمد التطبيق على Header؟
---
🧪 تمرين 4 — تحليل State Changes
ابحث:
هل يوجد GET يغير بيانات؟
---
🧠 خلاصة اليوم (الفهم الحقيقي)
اليوم الثاني ليس عن:
> “ما هو GET وPOST”
بل عن:
> كيف تتعامل بنية الويب بالكامل مع البيانات، وكيف يؤدي سوء فهم هذه البنية إلى ظهور الثغرات.
---
🎯 أهم فكرة في اليوم
> "الثغرات لا تظهر لأن HTTP ضعيف… بل لأن التطبيقات تبني ثقة خاطئة فوق بروتوكول لا يفرض هذه الثقة."
redirects
reset links
---
🔥 مثال خطير جدًا
التطبيق:
resetLink = "https://" + Host + "/reset?token=XYZ"
الهاكر:
Host: evil.com
---
💥 النتيجة
الرابط يصبح:
https://evil.com/reset?token=XYZ
---
🔥 الآن:
الضحية تستلم الرابط
تضغط
التوكن يذهب للمهاجم
---
🔥 هذا يسمى:
Password Reset Poisoning
---
🔍 User-Agent
User-Agent: Mozilla/5.0
---
🧠 لماذا وُجد؟
لكي يعرف السيرفر:
نوع المتصفح
النظام
التوافق
---
💣 المشكلة
هو مجرد:
String
---
🔥 أي شخص يستطيع:
User-Agent: iPhone
---
🔥 لماذا هذا مهم؟
بعض الأنظمة:
تعطي صلاحيات
تخفي خصائص
تغير behavior
اعتمادًا عليه.
---
🔍 Referer
Referer: https://google.com
---
🧠 لماذا أُضيف؟
لإخبار الموقع:
> من أين جاء المستخدم
---
🔥 المشكلة
يمكن أن يحتوي:
Tokens
Secrets
Session IDs
---
💣 وعند الانتقال لموقع آخر:
قد يتم تسريبه.
---
3) 💣 التطبيق (Real Attack Scenarios)
---
🔥 سيناريو 1 — GET State Change
GET /deleteAccount
---
💣 لماذا خطير؟
لأن:
المتصفح قد يزور الرابط تلقائيًا
صورة مخفية قد تستدعيه
crawler قد يفتحه
---
🔥 النتيجة
حذف الحساب بدون قصد.
---
🔥 سيناريو 2 — Host Header Injection
المهاجم:
Host: evil.com
التطبيق:
يبني reset link
---
💥 النتيجة
سرقة حساب.
---
🔥 سيناريو 3 — Referer Leakage
رابط reset يحتوي token.
المستخدم يخرج لموقع خارجي.
---
💥 النتيجة
التوكن يتسرب.
---
🔥 سيناريو 4 — User-Agent Trust
النظام:
if User-Agent == internal
---
💥 bypass
---
4) 🛡️ الحماية (Defense — Deep Defensive Thinking)
---
🔐 1) Treat Headers as User Input
أي Header: ❌ غير موثوق
---
🔐 2) Never Put Secrets in URLs
أبدًا.
---
🔐 3) Validate Host Header
whitelist
canonical host
---
🔐 4) استخدم Referrer-Policy
مثل:
Referrer-Policy: strict-origin-when-cross-origin
---
🔐 5) لا تعتمد على User-Agent أمنيًا
---
🔐 6) GET يجب ألا يغير State
هذه نقطة معمارية مهمة جدًا.
---
5) 🧪 التدريب العملي (Professional Labs)
---
🧪 تمرين 1 — تحليل Requests
افتح DevTools:
راقب Headers
راقب Methods
---
🧪 تمرين 2 — Burp Suite
غيّر:
Host
Referer
User-Agent
وراقب behavior.
---
🧪 تمرين 3 — تفكير معماري
لكل Request اسأل:
هل هذه البيانات يجب أن تكون في URL؟
هل هناك secret؟
هل يعتمد التطبيق على Header؟
---
🧪 تمرين 4 — تحليل State Changes
ابحث:
هل يوجد GET يغير بيانات؟
---
🧠 خلاصة اليوم (الفهم الحقيقي)
اليوم الثاني ليس عن:
> “ما هو GET وPOST”
بل عن:
> كيف تتعامل بنية الويب بالكامل مع البيانات، وكيف يؤدي سوء فهم هذه البنية إلى ظهور الثغرات.
---
🎯 أهم فكرة في اليوم
> "الثغرات لا تظهر لأن HTTP ضعيف… بل لأن التطبيقات تبني ثقة خاطئة فوق بروتوكول لا يفرض هذه الثقة."
📅 اليوم 3 — Browser Security Model + Same-Origin Policy (SOP) + CSP
(شرح معماري عميق لكيف يفكر المتصفح ولماذا ظهرت أخطر ثغرات الويب)
> اليوم الثالث يعتبر من أهم الأيام في الرحلة كلها.
لأنك اليوم لن تتعلم “ثغرة”.
بل ستتعلم:
🔥 كيف يفكر المتصفح نفسه.
وإذا فهمت هذا اليوم جيدًا… ستفهم لاحقًا:
XSS
CSRF
CORS
Clickjacking
Token Theft
Session Hijacking
DOM Attacks
لأن كل هذه مرتبطة مباشرة بطريقة عمل الـ Browser Security Model.
الكتاب في هذا الجزء يشرح:
مكونات المتصفح
Same-Origin Policy
Content Security Policy
Iframe sandboxing
Subresource Integrity
HSTS
وكيف ظهرت مشاكل الـ SOP bypasses بسبب اختلاف تفسير الطبقات المختلفة داخل المتصفح
---
1) 🧠 الفهم النظري (Concept — Deep Browser Architecture)
---
🔹 أولًا: ما هو المتصفح فعلًا؟
الناس تتعامل مع المتصفح كأنه:
> “برنامج يعرض مواقع”
لكن هذا فهم سطحي جدًا.
---
🔥 المتصفح فعليًا هو:
> نظام تشغيل مصغر للتطبيقات غير الموثوقة
---
🧠 ماذا يعني ذلك؟
عندما تفتح موقعًا…
أنت فعليًا تسمح لكود خارجي من الإنترنت أن يعمل على جهازك:
JavaScript
HTML
CSS
WebAssembly
APIs
---
🔥 تخيل خطورة هذا
أي موقع تفتحه:
> يمكنه تنفيذ كود داخل بيئة المتصفح
---
🔥 إذن السؤال التاريخي المهم:
كيف سمحت المتصفحات بتشغيل كود من الإنترنت… بدون أن تدمر جهاز المستخدم؟
---
🔥 هنا ظهر:
> Browser Security Model
---
🔹 ما هو Browser Security Model؟
هو:
> مجموعة القوانين التي تمنع المواقع من مهاجمة بعضها أو الوصول لبيانات بعضها.
---
🔥 لماذا هذا ضروري؟
تخيل السيناريو التالي:
أنت فتحت:
Gmail
Facebook
بنكك
في نفس المتصفح.
ثم فتحت:
evil.com
---
💣 ماذا سيحدث بدون حماية؟
evil.com يمكنه:
قراءة Gmail
سرقة Session البنك
إرسال رسائل
قراءة البيانات
---
🔥 إذن المتصفح يحتاج:
> “عزل” المواقع عن بعضها
ومن هنا ظهرت:
🔐 Same-Origin Policy (SOP)
---
🔹 ما هي SOP فعليًا؟
الشرح السطحي يقول:
> “سياسة تمنع المواقع من الوصول لبعضها”
لكن هذا ليس الفهم الحقيقي.
---
🔥 SOP فعليًا هي:
> الجدار الأمني الأساسي الذي يمنع JavaScript من كسر حدود المواقع الأخرى.
---
🧠 ماذا يعني Origin؟
Origin =
Protocol + Host + Port
---
🔬 مثال
هذه:
https://example.com
ليست نفس:
http://example.com
ولا نفس:
https://admin.example.com
ولا نفس:
https://example.com:8080
---
🔥 لماذا كل هذا مهم؟
لأن:
> المتصفح يعزل البيانات بناءً على Origin
---
🔥 إذن ما الذي تمنعه SOP؟
إذا كان لديك:
evil.com
فإن JavaScript بداخله لا يستطيع:
❌ قراءة:
gmail.com
bank.com
facebook.com
---
🔥 نقطة مهمة جدًا
SOP لا تمنع:
> إرسال الطلبات
بل تمنع:
> قراءة الردود
---
🧠 هذه نقطة احترافية جدًا
يعني:
fetch("https://bank.com")
قد يُرسل الطلب…
لكن: ❌ JavaScript لن يستطيع قراءة النتيجة غالبًا.
---
🔥 لماذا هذا التصميم؟
لأن الويب يحتاج:
تحميل صور
تحميل scripts
تحميل iframes
من مواقع مختلفة.
---
🔥 إذن لو مُنع كل شيء:
> الويب لن يعمل أصلًا
---
🔥 لذلك SOP هي:
> توازن بين الوظائف والأمان
---
🔹 الآن السؤال الخطير
إذا كانت SOP قوية جدًا…
كيف تظهر:
XSS
Token Theft
Session Hijacking ؟
---
🔥 الجواب المهم جدًا
لأن:
> SOP تثق بالكود داخل نفس الـ Origin
---
🔥 وهذه أخطر نقطة في XSS
إذا استطعت تشغيل JavaScript داخل:
bank.com
فأنت أصبحت:
> “داخل الحدود الموثوقة”
---
🔥 إذن XSS ليس:
> “تشغيل JavaScript”
بل:
> “إقناع المتصفح أن كود المهاجم ينتمي لنفس Origin”
---
2) ⚙️ الآلية (How it works — Deep Internal Mechanics)
---
🔹 كيف يرى المتصفح المواقع داخليًا؟
المتصفح لا يرى:
صفحات
أزرار
بل يرى:
Origins
Processes
Execution Contexts
---
🔥 لماذا؟
لأن المتصفح يشغّل:
JavaScript
DOM
Rendering
داخل بيئات منفصلة.
---
🔹 Site Isolation
الكتاب يذكر مفهوم:
> Site Isolation
---
🧠 لماذا ظهر؟
قديمًا:
عدة مواقع كانت تعمل داخل نفس Process
---
💣 المشكلة
لو حدث:
Memory corruption
Browser bug
قد يتم الوصول لبيانات مواقع أخرى.
---
🔥 لذلك المتصفحات الحديثة بدأت:
> فصل المواقع في Processes مستقلة
---
🔥 هذا مهم جدًا ضد:
Spectre
Memory leaks
Cross-site attacks
---
🔹 كيف تطبق SOP فعليًا؟
---
🧩 السيناريو
لدينا:
evil.com
يحاول تنفيذ:
fetch("https://bank.com/account")
---
🔥 ماذا يحدث داخليًا؟
1️⃣ المتصفح يسمح بإرسال الطلب
لأن:
(شرح معماري عميق لكيف يفكر المتصفح ولماذا ظهرت أخطر ثغرات الويب)
> اليوم الثالث يعتبر من أهم الأيام في الرحلة كلها.
لأنك اليوم لن تتعلم “ثغرة”.
بل ستتعلم:
🔥 كيف يفكر المتصفح نفسه.
وإذا فهمت هذا اليوم جيدًا… ستفهم لاحقًا:
XSS
CSRF
CORS
Clickjacking
Token Theft
Session Hijacking
DOM Attacks
لأن كل هذه مرتبطة مباشرة بطريقة عمل الـ Browser Security Model.
الكتاب في هذا الجزء يشرح:
مكونات المتصفح
Same-Origin Policy
Content Security Policy
Iframe sandboxing
Subresource Integrity
HSTS
وكيف ظهرت مشاكل الـ SOP bypasses بسبب اختلاف تفسير الطبقات المختلفة داخل المتصفح
---
1) 🧠 الفهم النظري (Concept — Deep Browser Architecture)
---
🔹 أولًا: ما هو المتصفح فعلًا؟
الناس تتعامل مع المتصفح كأنه:
> “برنامج يعرض مواقع”
لكن هذا فهم سطحي جدًا.
---
🔥 المتصفح فعليًا هو:
> نظام تشغيل مصغر للتطبيقات غير الموثوقة
---
🧠 ماذا يعني ذلك؟
عندما تفتح موقعًا…
أنت فعليًا تسمح لكود خارجي من الإنترنت أن يعمل على جهازك:
JavaScript
HTML
CSS
WebAssembly
APIs
---
🔥 تخيل خطورة هذا
أي موقع تفتحه:
> يمكنه تنفيذ كود داخل بيئة المتصفح
---
🔥 إذن السؤال التاريخي المهم:
كيف سمحت المتصفحات بتشغيل كود من الإنترنت… بدون أن تدمر جهاز المستخدم؟
---
🔥 هنا ظهر:
> Browser Security Model
---
🔹 ما هو Browser Security Model؟
هو:
> مجموعة القوانين التي تمنع المواقع من مهاجمة بعضها أو الوصول لبيانات بعضها.
---
🔥 لماذا هذا ضروري؟
تخيل السيناريو التالي:
أنت فتحت:
Gmail
بنكك
في نفس المتصفح.
ثم فتحت:
evil.com
---
💣 ماذا سيحدث بدون حماية؟
evil.com يمكنه:
قراءة Gmail
سرقة Session البنك
إرسال رسائل
قراءة البيانات
---
🔥 إذن المتصفح يحتاج:
> “عزل” المواقع عن بعضها
ومن هنا ظهرت:
🔐 Same-Origin Policy (SOP)
---
🔹 ما هي SOP فعليًا؟
الشرح السطحي يقول:
> “سياسة تمنع المواقع من الوصول لبعضها”
لكن هذا ليس الفهم الحقيقي.
---
🔥 SOP فعليًا هي:
> الجدار الأمني الأساسي الذي يمنع JavaScript من كسر حدود المواقع الأخرى.
---
🧠 ماذا يعني Origin؟
Origin =
Protocol + Host + Port
---
🔬 مثال
هذه:
https://example.com
ليست نفس:
http://example.com
ولا نفس:
https://admin.example.com
ولا نفس:
https://example.com:8080
---
🔥 لماذا كل هذا مهم؟
لأن:
> المتصفح يعزل البيانات بناءً على Origin
---
🔥 إذن ما الذي تمنعه SOP؟
إذا كان لديك:
evil.com
فإن JavaScript بداخله لا يستطيع:
❌ قراءة:
gmail.com
bank.com
facebook.com
---
🔥 نقطة مهمة جدًا
SOP لا تمنع:
> إرسال الطلبات
بل تمنع:
> قراءة الردود
---
🧠 هذه نقطة احترافية جدًا
يعني:
fetch("https://bank.com")
قد يُرسل الطلب…
لكن: ❌ JavaScript لن يستطيع قراءة النتيجة غالبًا.
---
🔥 لماذا هذا التصميم؟
لأن الويب يحتاج:
تحميل صور
تحميل scripts
تحميل iframes
من مواقع مختلفة.
---
🔥 إذن لو مُنع كل شيء:
> الويب لن يعمل أصلًا
---
🔥 لذلك SOP هي:
> توازن بين الوظائف والأمان
---
🔹 الآن السؤال الخطير
إذا كانت SOP قوية جدًا…
كيف تظهر:
XSS
Token Theft
Session Hijacking ؟
---
🔥 الجواب المهم جدًا
لأن:
> SOP تثق بالكود داخل نفس الـ Origin
---
🔥 وهذه أخطر نقطة في XSS
إذا استطعت تشغيل JavaScript داخل:
bank.com
فأنت أصبحت:
> “داخل الحدود الموثوقة”
---
🔥 إذن XSS ليس:
> “تشغيل JavaScript”
بل:
> “إقناع المتصفح أن كود المهاجم ينتمي لنفس Origin”
---
2) ⚙️ الآلية (How it works — Deep Internal Mechanics)
---
🔹 كيف يرى المتصفح المواقع داخليًا؟
المتصفح لا يرى:
صفحات
أزرار
بل يرى:
Origins
Processes
Execution Contexts
---
🔥 لماذا؟
لأن المتصفح يشغّل:
JavaScript
DOM
Rendering
داخل بيئات منفصلة.
---
🔹 Site Isolation
الكتاب يذكر مفهوم:
> Site Isolation
---
🧠 لماذا ظهر؟
قديمًا:
عدة مواقع كانت تعمل داخل نفس Process
---
💣 المشكلة
لو حدث:
Memory corruption
Browser bug
قد يتم الوصول لبيانات مواقع أخرى.
---
🔥 لذلك المتصفحات الحديثة بدأت:
> فصل المواقع في Processes مستقلة
---
🔥 هذا مهم جدًا ضد:
Spectre
Memory leaks
Cross-site attacks
---
🔹 كيف تطبق SOP فعليًا؟
---
🧩 السيناريو
لدينا:
evil.com
يحاول تنفيذ:
fetch("https://bank.com/account")
---
🔥 ماذا يحدث داخليًا؟
1️⃣ المتصفح يسمح بإرسال الطلب
لأن:
الإنترنت يحتاج cross-origin requests
---
2️⃣ bank.com يرد
---
3️⃣ الآن SOP تتدخل
المتصفح يفحص:
Origin(requester) != Origin(target)
---
💥 النتيجة
JavaScript لا يستطيع قراءة response.
---
🔥 إذن SOP تعمل:
> بعد وصول الرد
وهذه نقطة دقيقة جدًا.
---
🔹 DOM وSOP
JavaScript من:
evil.com
لا يستطيع:
window.frames[0].document
إذا كان iframe من Origin مختلف.
---
🔥 لأن DOM أيضًا محمي بـ SOP
---
🔹 لماذا ظهرت SOP bypasses؟
الكتاب يذكر:
> اختلاف تفسير الطبقات المختلفة داخل المتصفح قد يؤدي إلى bypasses
---
🧠 ماذا يعني هذا؟
المشكلة ليست دائمًا:
> “فشل SOP”
بل:
> “طبقة تفهم البيانات بطريقة تختلف عن طبقة أخرى”
---
🔥 مثال معماري مهم
قد:
DNS يرى domain معين
DOM يراه مختلفًا
Cookie store يفسره بطريقة أخرى
---
💣 هنا تبدأ bypasses
---
3) 💣 التطبيق (Real Attack Scenarios)
---
🔥 سيناريو 1 — لماذا XSS كارثي؟
إذا حقن المهاجم JavaScript داخل:
bank.com
فإن SOP تعتبره:
> موثوقًا
---
💥 النتيجة
يمكنه:
قراءة DOM
قراءة tokens
إرسال requests
تنفيذ actions
---
🔥 الآن فهمت:
لماذا XSS من أخطر الثغرات.
---
🔥 سيناريو 2 — iframe attacks
evil.com يضع:
<iframe src="https://bank.com">
---
💣 هل يستطيع قراءة محتواه؟
❌ لا
بسبب SOP.
---
🔥 سيناريو 3 — Browser Bug
لو حدث:
renderer bug
memory corruption
قد يتم تجاوز العزل.
---
🔥 لهذا Browser Exploitation خطير جدًا.
---
4) 🛡️ الحماية (Defense — Browser-Level Security Thinking)
---
🔐 1) SOP
أول خط دفاع.
---
🔐 2) CSP (Content Security Policy)
الكتاب يشرح CSP كآلية:
> لتقييد مصادر المحتوى والسكربتات
---
🔥 لماذا ظهرت CSP؟
لأن:
> SOP وحدها لا تمنع XSS
---
🔥 كيف تعمل CSP؟
مثال:
Content-Security-Policy:
script-src trusted.com
---
🧠 ماذا يعني؟
المتصفح:
> لن يشغّل JavaScript إلا من trusted.com
---
🔥 إذن CSP تحاول:
> تقليل أثر XSS
---
🔥 لكنها ليست مثالية
لأن:
misconfigurations
unsafe-inline
bypasses
---
🔐 3) Iframe Sandbox
لعزل المحتوى داخل iframe.
---
🔐 4) Subresource Integrity (SRI)
الكتاب يذكر:
> SRI يتحقق من سلامة الملفات الخارجية
---
🔥 لماذا هذا مهم؟
إذا تم اختراق CDN…
المتصفح يرفض الملف المعدل.
---
🔐 5) HSTS
لإجبار HTTPS.
---
5) 🧪 التدريب العملي (Professional Labs)
---
🧪 تمرين 1 — مراقبة SOP
افتح Console:
fetch("https://google.com")
راقب:
هل أُرسل الطلب؟
هل أمكن قراءة الرد؟
---
🧪 تمرين 2 — iframe isolation
أنشئ:
<iframe src="https://example.com"></iframe>
ثم حاول الوصول للـ DOM.
---
🧪 تمرين 3 — CSP
افتح موقع يستخدم CSP.
راقب:
Headers
blocked scripts
---
🧪 تمرين 4 — تحليل Origins
قارن:
https://example.com
http://example.com
https://admin.example.com
هل تعتبر نفس Origin؟
---
🧠 خلاصة اليوم (الفهم الحقيقي)
اليوم الثالث ليس عن:
> “سياسة SOP”
بل عن:
> كيف يحاول المتصفح تشغيل كود غير موثوق من الإنترنت… بدون أن يسمح له بكسر حدود المواقع الأخرى.
---
🎯 أهم فكرة في اليوم
> "XSS خطير ليس لأنه JavaScript… بل لأنه يجعل المتصفح يثق بكود المهاجم كأنه جزء من نفس الموقع."
---
2️⃣ bank.com يرد
---
3️⃣ الآن SOP تتدخل
المتصفح يفحص:
Origin(requester) != Origin(target)
---
💥 النتيجة
JavaScript لا يستطيع قراءة response.
---
🔥 إذن SOP تعمل:
> بعد وصول الرد
وهذه نقطة دقيقة جدًا.
---
🔹 DOM وSOP
JavaScript من:
evil.com
لا يستطيع:
window.frames[0].document
إذا كان iframe من Origin مختلف.
---
🔥 لأن DOM أيضًا محمي بـ SOP
---
🔹 لماذا ظهرت SOP bypasses؟
الكتاب يذكر:
> اختلاف تفسير الطبقات المختلفة داخل المتصفح قد يؤدي إلى bypasses
---
🧠 ماذا يعني هذا؟
المشكلة ليست دائمًا:
> “فشل SOP”
بل:
> “طبقة تفهم البيانات بطريقة تختلف عن طبقة أخرى”
---
🔥 مثال معماري مهم
قد:
DNS يرى domain معين
DOM يراه مختلفًا
Cookie store يفسره بطريقة أخرى
---
💣 هنا تبدأ bypasses
---
3) 💣 التطبيق (Real Attack Scenarios)
---
🔥 سيناريو 1 — لماذا XSS كارثي؟
إذا حقن المهاجم JavaScript داخل:
bank.com
فإن SOP تعتبره:
> موثوقًا
---
💥 النتيجة
يمكنه:
قراءة DOM
قراءة tokens
إرسال requests
تنفيذ actions
---
🔥 الآن فهمت:
لماذا XSS من أخطر الثغرات.
---
🔥 سيناريو 2 — iframe attacks
evil.com يضع:
<iframe src="https://bank.com">
---
💣 هل يستطيع قراءة محتواه؟
❌ لا
بسبب SOP.
---
🔥 سيناريو 3 — Browser Bug
لو حدث:
renderer bug
memory corruption
قد يتم تجاوز العزل.
---
🔥 لهذا Browser Exploitation خطير جدًا.
---
4) 🛡️ الحماية (Defense — Browser-Level Security Thinking)
---
🔐 1) SOP
أول خط دفاع.
---
🔐 2) CSP (Content Security Policy)
الكتاب يشرح CSP كآلية:
> لتقييد مصادر المحتوى والسكربتات
---
🔥 لماذا ظهرت CSP؟
لأن:
> SOP وحدها لا تمنع XSS
---
🔥 كيف تعمل CSP؟
مثال:
Content-Security-Policy:
script-src trusted.com
---
🧠 ماذا يعني؟
المتصفح:
> لن يشغّل JavaScript إلا من trusted.com
---
🔥 إذن CSP تحاول:
> تقليل أثر XSS
---
🔥 لكنها ليست مثالية
لأن:
misconfigurations
unsafe-inline
bypasses
---
🔐 3) Iframe Sandbox
لعزل المحتوى داخل iframe.
---
🔐 4) Subresource Integrity (SRI)
الكتاب يذكر:
> SRI يتحقق من سلامة الملفات الخارجية
---
🔥 لماذا هذا مهم؟
إذا تم اختراق CDN…
المتصفح يرفض الملف المعدل.
---
🔐 5) HSTS
لإجبار HTTPS.
---
5) 🧪 التدريب العملي (Professional Labs)
---
🧪 تمرين 1 — مراقبة SOP
افتح Console:
fetch("https://google.com")
راقب:
هل أُرسل الطلب؟
هل أمكن قراءة الرد؟
---
🧪 تمرين 2 — iframe isolation
أنشئ:
<iframe src="https://example.com"></iframe>
ثم حاول الوصول للـ DOM.
---
🧪 تمرين 3 — CSP
افتح موقع يستخدم CSP.
راقب:
Headers
blocked scripts
---
🧪 تمرين 4 — تحليل Origins
قارن:
https://example.com
http://example.com
https://admin.example.com
هل تعتبر نفس Origin؟
---
🧠 خلاصة اليوم (الفهم الحقيقي)
اليوم الثالث ليس عن:
> “سياسة SOP”
بل عن:
> كيف يحاول المتصفح تشغيل كود غير موثوق من الإنترنت… بدون أن يسمح له بكسر حدود المواقع الأخرى.
---
🎯 أهم فكرة في اليوم
> "XSS خطير ليس لأنه JavaScript… بل لأنه يجعل المتصفح يثق بكود المهاجم كأنه جزء من نفس الموقع."