⚡ Shadow Academy
🔐 Chapter 2

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āϕ⧀ āĻļāĻŋāĻ–āĻŦ⧇

⏱ āφāύ⧁āĻŽāĻžāύāĻŋāĻ• āϏāĻŽāϝāĻŧ: ā§§ā§Ģâ€“ā§¨ā§Ļ āĻŽāĻŋāύāĻŋāϟ ¡ āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ: āφāϗ⧇āϰ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇āϰ āϧāĻžāϰāĻŖāĻž

ā§Ļ / ā§§ā§Ļā§Ļ āĻ…āĻ§ā§āϝāĻžā§ŸāϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“: āĻ…āĻ§ā§āϝāĻžāϝāĻŧ 3

āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āĻāχ browser-āĻ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāĻŦ⧇āĨ¤

🔐
Cookie, Session āĻ“ JWT Token
āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āϤ⧋āĻŽāĻžāϕ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻšā§‡āύ⧇ āϰāĻžāϖ⧇?
🧭 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ āĻ“ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• takeaway
Skill checkpoint: Cookie, server session āĻ“ JWT āϕ⧀āĻ­āĻžāĻŦ⧇ āφāϞāĻžāĻĻāĻž āϤāĻž āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧋āĨ¤
Defense checkpoint: Secure, HttpOnly, SameSite flags āĻāĻŦāĻ‚ server-side token verification āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧋.
Lab scope: āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ…āύ⧁āĻļā§€āϞāύ āĻ•āϰ⧋āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧋āϰ⧋ āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ“ retest āύāĻŋā§Ÿā§‡ ā§Ģ-āϞāĻžāχāύ⧇āϰ redacted note āϰāĻžāĻ–ā§‹āĨ¤
👴 āϭ⧁āϞ⧋āĻŽāύāĻž āĻĻā§‹āĻ•āĻžāύāĻĻāĻžāϰ āĻ•āĻžāϕ⧁ — HTTP Stateless āϕ⧇āύ?
HTTP protocol āĻāĻ•āĻĻāĻŽ āϭ⧁āϞ⧋āĻŽāύāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž request-āĻāϰ āĻĒāϰ āϏāĻŦ āϭ⧁āϞ⧇ āϝāĻžāϝāĻŧ!

🧑 āϤ⧁āĻŽāĻŋ login āĻ•āϰāϞ⧇ → Server āϤ⧋āĻŽāĻžāϕ⧇ āϚāĻŋāύāϞ⧋
🧑 āĻĒāϰ⧇āϰ page-āĻ āϗ⧇āϞ⧇ → Server āφāĻŦāĻžāϰ āϭ⧁āϞ⧇ āϗ⧇āϞ⧋!

āĻāϟāĻžāχ Stateless āĻŽāĻžāύ⧇ — server āϕ⧋āύ⧋ state āĻŽāύ⧇ āϰāĻžāϖ⧇ āύāĻžāĨ¤ āϤāĻžāĻšāϞ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ logged in āĻĨāĻžāϕ⧋?

āϏāĻŽāĻžāϧāĻžāύ: Cookie! Browser-āĻ āϛ⧋āĻŸā§āϟ āϚāĻŋāϰāϕ⧁āϟ āϰ⧇āϖ⧇ āĻĻāĻžāĻ“āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž request-āĻ āϏ⧇āχ āϚāĻŋāϰāϕ⧁āϟ āĻĒāĻžāĻ āĻžāĻ“āĨ¤
đŸĒ Cookie — Browser-āĻāϰ āĻ—ā§‹āĻĒāύ āϚāĻŋāϰāϕ⧁āϟ
Cookie = Browser-āĻ store āĻšāĻ“āϝāĻŧāĻž āϛ⧋āĻŸā§āϟ dataāĨ¤ Server set āĻ•āϰ⧇, Browser āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϝāĻŧ:
Server → Browser: Set-Cookie: session_id=SESSION_PLACEHOLDER; HttpOnly; Secure; Max-Age=3600 Browser → Server (āĻĒā§āϰāϤāĻŋāϟāĻž request-āĻ): Cookie: session_id=SESSION_PLACEHOLDER
Cookie-āϰ important flags:
🔒 HttpOnly → JavaScript āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧāĻž āϝāĻžāĻŦ⧇ āύāĻž (XSS āĻĨ⧇āϕ⧇ āϰāĻ•ā§āώāĻž)
🔒 Secure → āĻļ⧁āϧ⧁ HTTPS-āĻ āĻĒāĻžāĻ āĻžāĻŦ⧇ (HTTP-āϤ⧇ āύāϝāĻŧ)
⏰ Max-Age → āĻ•āϤāĻ•ā§āώāĻŖ valid āĻĨāĻžāĻ•āĻŦ⧇ (seconds-āĻ)
🌐 SameSite → āĻ…āĻ¨ā§āϝ site āĻĨ⧇āϕ⧇ request-āĻ āĻĒāĻžāĻ āĻžāĻŦ⧇ āύāĻž (CSRF āϰāĻ•ā§āώāĻž)
đŸĻ Session — Server-āĻāϰ āĻ—ā§‹āĻĒāύ āĻ–āĻžāϤāĻž
Session = server-āĻ store āĻšāĻ“āϝāĻŧāĻž user dataāĨ¤ Cookie-āϤ⧇ āĻļ⧁āϧ⧁ session ID āĻĨāĻžāϕ⧇:
Browser-āĻ Cookie: session_id=SESSION_PLACEHOLDER Server-āĻ memory/database: session["xyz789"] = { "user_id": "670490", "name": "Sourav", "logged_in": true, "cart": [101, 102] }
Cookie vs Session āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ:
đŸĒ Cookie → Browser-āĻ store (client-side) — user āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇
đŸ—„ī¸ Session → Server-āĻ store (server-side) — user āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž
đŸŽĢ JWT Token — āφāϧ⧁āύāĻŋāĻ• āĻĒāϰāĻŋāϚāϝāĻŧāĻĒāĻ¤ā§āϰ
JWT = JSON Web TokenāĨ¤ āϤāĻŋāύāϟāĻž part, dot āĻĻāĻŋāϝāĻŧ⧇ āφāϞāĻžāĻĻāĻž:
SESSION_TOKEN_PLACEHOLDER ← Header (algorithm info) .SESSION_TOKEN_PLACEHOLDER ← Payload (actual data) .SflKxwRJSMeKKF2QT4fwpMeJ ← Signature (tamper-proof)
Header = āϕ⧋āύ algorithm use āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
Payload = user data (Base64 encoded — āĻĒāĻĄāĻŧāĻž āϝāĻžāϝāĻŧ!)
Signature = HMAC(Header+Payload, secret) — modify āĻ•āϰāϞ⧇ invalid āĻšāϝāĻŧ

âš ī¸ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ: JWT Payload āĻļ⧁āϧ⧁ encoded, encrypted āύāϝāĻŧ!
āϝ⧇ āϕ⧇āω Base64 decode āĻ•āϰ⧇ Payload āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇ — āϤāĻžāχ sensitive data āϰāĻžāĻ–ā§‹ āύāĻž!
🔄 Bearer Token — Authorization Header
JWT token āϏāĻžāϧāĻžāϰāĻŖāϤ Authorization header-āĻ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧ:
GET /api/v2/profile Authorization: Bearer SESSION_TOKEN_PLACEHOLDER Content-Type: application/json
Meesho-āϤ⧇ x-token header-āĻ JWT āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧāĨ¤
🔄 Refresh Token — āĻĻā§€āĻ°ā§āϘāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ session
Access token āĻŽāĻžāĻ¤ā§āϰ ā§§ā§Ģ-ā§Ŧā§Ļ āĻŽāĻŋāύāĻŋāϟ validāĨ¤ Refresh token ā§­-ā§Šā§Ļ āĻĻāĻŋāύ valid:
Access Token expire āĻšāϞ⧇: POST /auth/token/refresh Body: {"refresh_token": "eyJhbGc...[long-lived]"} Response: {"access_token": "eyJhbGc...[new]", "expires_in": 3600}
✅ User-āϕ⧇ āĻŦāĻžāϰāĻŦāĻžāϰ login āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āύāĻž
✅ Access token āϛ⧋āϟ lifetime-āĻ secure
✅ Refresh token compromise āĻšāϞ⧇ → logout āĻ•āϰ⧋
đŸ›Ąī¸ CSRF Attack — āĻ­āĻ¨ā§āĻĄ āĻšā§‹āϰ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇
CSRF = Cross-Site Request ForgeryāĨ¤ Evil site āϤ⧋āĻŽāĻžāϰ browser āĻĻāĻŋāϝāĻŧ⧇ attack āĻ•āϰ⧇:
āϤ⧁āĻŽāĻŋ bank.com-āĻ logged in āφāϛ⧋āĨ¤ Evil site-āĻ āϗ⧇āϞ⧇ → evil.com/transfer?to=hacker&amount=50000 ↑ āϤ⧋āĻŽāĻžāϰ browser automatically bank-āĻāϰ cookie āĻĒāĻžāĻ āĻžāϝāĻŧ! ↑ Bank āĻŽāύ⧇ āĻ•āϰ⧇ āϤ⧁āĻŽāĻŋāχ request āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇āϛ⧋!
CSRF Token āĻĻāĻŋāϝāĻŧ⧇ āϰāĻ•ā§āώāĻž:
Server hidden field-āĻ random token āĻĻ⧇āϝāĻŧ: <input type="hidden" name="csrf_token" value="k8j2n9s4q7"> Evil site āĻāχ token āϜāĻžāύ⧇ āύāĻž → request reject!
💡 Chapter 2-āĻāϰ āĻŽā§‚āϞ āĻļāĻŋāĻ•ā§āώāĻž
đŸĒ Cookie = Browser-āĻ store, HttpOnly flag āĻĻāĻŋāϞ⧇ JS āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž
đŸ—„ī¸ Session = Server-āĻ store, Cookie-āϤ⧇ āĻļ⧁āϧ⧁ ID āĻĨāĻžāϕ⧇
đŸŽĢ JWT = Header.Payload.Signature — Payload āĻļ⧁āϧ⧁ Base64, decrypt āĻ•āϰāĻž āϝāĻžāϝāĻŧ!
🔄 Access Token = ā§§ āϘāĻŖā§āϟāĻž valid, Refresh Token = ā§­-ā§Šā§Ļ āĻĻāĻŋāύ
📤 Bearer Token = Authorization: Bearer TOKEN header-āĻ
đŸ›Ąī¸ CSRF = āĻ…āĻ¨ā§āϝ site āϤ⧋āĻŽāĻžāϰ browser āĻĻāĻŋāϝāĻŧ⧇ attack — CSRF token āĻĻāĻŋāϝāĻŧ⧇ āϰāĻ•ā§āώāĻž
🔑 JWT Token āĻĄāĻŋāϕ⧋āĻĄāĻžāϰ
JWT token āĻĻāĻžāĻ“ — Header āĻ“ Payload decode āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇!
👆 āωāĻĒāϰ⧇ āĻ•āĻŋāϛ⧁ āĻĻāĻŋāϝāĻŧ⧇ āĻ˛ā§āϝāĻžāĻŦ āϚāĻžāϞ⧁ āĻ•āϰ⧋...
đŸŽ¯ Chapter 2 — āϕ⧁āχāϜ (ā§§ā§ĻāϟāĻž āĻĒā§āϰāĻļā§āύ)
āĻĒā§āϰāϤāĻŋāϟāĻž āωāĻ¤ā§āϤāϰ⧇ click āĻ•āϰ⧋ → āϏāĻŦ⧁āϜ/āϞāĻžāϞ + āĻŦā§āϝāĻžāĻ–ā§āϝāĻž!
❓ āĻĒā§āϰāĻļā§āύ 1: HTTP āϕ⧇āύ stateless?
💡 HTTP Stateless = āĻĒā§āϰāϤāĻŋāϟāĻž request āĻ¸ā§āĻŦāĻžāϧ⧀āύāĨ¤ Server state āĻŽāύ⧇ āϰāĻžāϖ⧇ āύāĻž — āϤāĻžāχ Cookie/Session āĻĻāϰāĻ•āĻžāϰāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 2: Cookie āϕ⧋āĻĨāĻžāϝāĻŧ store āĻšāϝāĻŧ?
💡 Cookie = client-side storageāĨ¤ Browser-āĻ store āĻšāϝāĻŧāĨ¤ Server Set-Cookie header āĻĻāĻŋāϝāĻŧ⧇ set āĻ•āϰ⧇āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 3: HttpOnly cookie flag āϕ⧀ āĻ•āϰ⧇?
💡 HttpOnly flag = JavaScript-āĻāϰ document.cookie āĻĻāĻŋāϝāĻŧ⧇ āϏ⧇āχ cookie access āĻ•āϰāĻž āϝāĻžāϝāĻŧ āύāĻžāĨ¤ XSS attack prevent āĻ•āϰ⧇āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 4: JWT-āĻāϰ Payload āĻ•āĻŋ encrypted?
💡 JWT Payload āĻļ⧁āϧ⧁ Base64 encoded — encrypted āύāϝāĻŧ! jwt.io āĻŦāĻž atob() āĻĻāĻŋāϝāĻŧ⧇ āϝ⧇ āϕ⧇āω āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Sensitive data āϰāĻžāĻ–ā§‹ āύāĻžāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 5: Refresh token āϕ⧇āύ āĻĻāϰāĻ•āĻžāϰ?
💡 Access token (ā§§ā§Ģ-ā§Ŧā§Ļ min) expire āĻšāϞ⧇ refresh token (ā§­-ā§Šā§Ļ āĻĻāĻŋāύ) āĻĻāĻŋāϝāĻŧ⧇ āύāϤ⧁āύ access token — āĻĒ⧁āύāϰāĻžāϝāĻŧ login āĻ›āĻžāĻĄāĻŧāĻžāχāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 6: CSRF attack āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇?
💡 CSRF = evil site āϤ⧋āĻŽāĻžāϰ browser-āĻāϰ cookie āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ target site-āĻ request āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ Browser automatically cookie āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 7: Bearer token āϕ⧋āύ HTTP header-āĻ?
💡 Bearer token āϏāĻžāϧāĻžāϰāĻŖāϤ Authorization: Bearer eyJ... header-āĻ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 8: JWT-āĻ āϤāĻŋāύāϟāĻž part āϕ⧀ āϕ⧀?
💡 JWT = Header.Payload.SignatureāĨ¤ Header = algorithm, Payload = data, Signature = tamper-proof hashāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 9: Session āϕ⧋āĻĨāĻžāϝāĻŧ store āĻšāϝāĻŧ?
💡 Session data server-āĻ (memory āĻŦāĻž database) store āĻšāϝāĻŧāĨ¤ Browser-āĻ āĻļ⧁āϧ⧁ session ID āϟāĻž Cookie-āϤ⧇ āĻĨāĻžāϕ⧇āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 10: CSRF token āϕ⧀āĻ­āĻžāĻŦ⧇ attack prevent āĻ•āϰ⧇?
💡 CSRF token = server āĻĒā§āϰāϤāĻŋāϟāĻž form-āĻ unique random token āĻĻ⧇āϝāĻŧāĨ¤ Evil site āĻāχ token āϜāĻžāύ⧇ āύāĻž — āϤāĻžāχ request reject āĻšāϝāĻŧāĨ¤

āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ reference

āφāϰāĻ“ āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻŋāϤ security standards āĻ“ guidance āĻĻ⧇āĻ–ā§‹; āĻĒā§āϰāϤāĻŋāϟāĻŋ lab āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻŦāĻž synthetic environment-āĻ āĻ•āϰ⧋āĨ¤

Bristy Ma'am
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ 👩‍đŸĢ
āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻ°ā§āϏ⧋āύāĻžāϞ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻŽā§‡āĻ¨ā§āϟāϰ â€ĸ āĻ…āύāϞāĻžāχāύ
āφāϰ⧇ āϏ⧌āϰāĻ­! āϕ⧇āĻŽāύ āφāϛ⧋? āϕ⧋āύ⧋ āĻ•āύāϏ⧇āĻĒā§āϟ āĻŦāĻž āϕ⧁āχāĻœā§‡ āφāϟāĻ•āĻžāϞ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧋, āφāĻŽāĻŋ āĻŦ⧁āĻāĻŋā§Ÿā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ! â¤ī¸