পাঠ ১৭ · ৬০-এর মধ্যে · মডিউল ৫
Home / Courses / Cybersecurity & Ethical Hacking / OWASP Top 10 পরিচিতি

OWASP Top 10 পরিচিতি ও ওয়েব আর্কিটেকচার রিভিউ

OWASP Top 10 intro & web architecture review
৮ মিনিট পড়া মধ্যবর্তী · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • OWASP আসলে কী, এবং কেন এর Top 10 তালিকা প্রায় প্রতিটি সিকিউরিটি টিম ব্যবহার করে
  • একটি সাধারণ ওয়েব রিকোয়েস্ট ক্লায়েন্ট থেকে সার্ভার হয়ে ডেটাবেস পর্যন্ত কীভাবে যাত্রা করে
  • ২০২১ সালের সম্পূর্ণ OWASP Top 10 তালিকা (A01-A10) এবং এই মডিউলে কোন পাঠে কোনটি কভার হবে
  • কেন "একটি নির্দিষ্ট আক্রমণ কৌশল" শেখার আগে পুরো আর্কিটেকচার বোঝা জরুরি

১ · OWASP Top 10 আসলে কী

OWASPOWASPOpen Worldwide Application Security Project — একটি অলাভজনক সংস্থা যা ওয়েব অ্যাপ্লিকেশন সিকিউরিটি নিয়ে গবেষণা, টুল ও শিক্ষামূলক রিসোর্স তৈরি করে, সম্পূর্ণ ফ্রি ও ওপেন। প্রতি কয়েক বছর পর হাজার হাজার বাস্তব অ্যাপ্লিকেশনের ডেটা বিশ্লেষণ করে একটি তালিকা প্রকাশ করে — সবচেয়ে সাধারণ ও সবচেয়ে ক্ষতিকর ওয়েব অ্যাপ্লিকেশন সিকিউরিটি ঝুঁকিগুলোর Top 10OWASP Top 10সবচেয়ে গুরুত্বপূর্ণ দশটি ওয়েব অ্যাপ্লিকেশন সিকিউরিটি রিস্ক ক্যাটাগরি, A01 থেকে A10 কোড দিয়ে চিহ্নিত। সর্বশেষ প্রধান সংস্করণ ২০২১ সালের। — যাকে বলা হয় OWASP Top 10।

এটি কোনো আইন বা সার্টিফিকেশন নয় — কিন্তু এটি এতটাই ব্যাপকভাবে গৃহীত যে বেশিরভাগ কোম্পানির সিকিউর-কোডিং নীতিমালা, পেনিট্রেশন টেস্ট রিপোর্ট, ও ডেভেলপার ট্রেনিং প্রোগ্রাম সরাসরি এই তালিকা অনুসরণ করে। এই মডিউলে (L18-L29) আমরা প্রতিটি ক্যাটাগরি একে একে — attacker-এর দৃষ্টিকোণ ও defender-এর প্রতিরক্ষা কৌশল, দুটোই সহ — কভার করব।

২ · ওয়েব রিকোয়েস্ট/রেসপন্স আর্কিটেকচার রিভিউ

OWASP-এর প্রতিটি ক্যাটাগরি আসলে একটি সাধারণ চেইনের কোনো না কোনো লিংক-এ আক্রমণ করে। তাই এগিয়ে যাওয়ার আগে এই চেইনটি ঝালিয়ে নেওয়া যাক —

ক্লায়েন্ট Browser / App সার্ভার Application logic ডেটাবেস Data store Request Response Query Data
প্রতিটি ওয়েব রিকোয়েস্ট এই চেইন অনুসরণ করে — এই মডিউলের প্রতিটি পাঠ এই চেইনের একটি নির্দিষ্ট লিংক আক্রমণ ও রক্ষা করার কৌশল শেখাবে।

যেমন — A01 (Broken Access Control, L18) সার্ভার কীভাবে ক্লায়েন্টের রিকোয়েস্ট যাচাই করে তা নিয়ে, A03 (Injection, L20-21) সার্ভার ও ডেটাবেসের মধ্যে যোগাযোগ নিয়ে, আর A02 (Cryptographic Failures, L19) পুরো চেইন জুড়ে ডেটা কীভাবে সংরক্ষিত/পরিবহন হয় তা নিয়ে। এই একই চেইনের ছবিটা মাথায় রাখলে প্রতিটি নতুন ক্যাটাগরি বোঝা অনেক সহজ হয়ে যাবে।

৩ · ২০২১ সালের সম্পূর্ণ OWASP Top 10 তালিকা

নিচে ২০২১ সালের সবশেষ প্রধান তালিকা — ঠিক এই মডিউলে যে ক্রমে পাঠগুলো আসবে সেই ক্রমেই দেওয়া হলো:

  1. A01 — Broken Access Control (ব্রোকেন অ্যাক্সেস কন্ট্রোল) — L18
  2. A02 — Cryptographic Failures (ক্রিপ্টোগ্রাফিক ফেইলিওর) — L19
  3. A03 — Injection (ইনজেকশন — SQL, Command ও অন্যান্য) — L20-L21
  4. A04 — Insecure Design (ইনসিকিউর ডিজাইন) — L22
  5. A05 — Security Misconfiguration (সিকিউরিটি মিসকনফিগারেশন) — L23
  6. A06 — Vulnerable and Outdated Components (ভালনারেবল ও আউটডেটেড কম্পোনেন্ট) — L24
  7. A07 — Identification and Authentication Failures (আইডেন্টিফিকেশন ও অথেন্টিকেশন ফেইলিওর) — L25
  8. A08 — Software and Data Integrity Failures (সফটওয়্যার ও ডেটা ইন্টিগ্রিটি ফেইলিওর) — L28
  9. A09 — Security Logging and Monitoring Failures (সিকিউরিটি লগিং ফেইলিওর) — L29
  10. A10 — Server-Side Request Forgery (SSRF) — L29
লক্ষ্য করুন XSS (L26) ও CSRF/Clickjacking (L27) এই সরাসরি তালিকায় নেই — কারণ ২০২১ সংস্করণে এগুলো A03 (Injection) ও অন্যান্য ক্যাটাগরির মধ্যে একীভূত হয়ে গেছে, কিন্তু এত ব্যাপকভাবে পাওয়া যায় বলে আমরা এই কোর্সে এদের জন্য আলাদা, বিস্তারিত পাঠ রেখেছি।
Python
owasp_top_10 = {
    "A01": "Broken Access Control",
    "A02": "Cryptographic Failures",
    "A03": "Injection",
    "A04": "Insecure Design",
    "A05": "Security Misconfiguration",
    "A06": "Vulnerable and Outdated Components",
    "A07": "Identification and Authentication Failures",
    "A08": "Software and Data Integrity Failures",
    "A09": "Security Logging and Monitoring Failures",
    "A10": "Server-Side Request Forgery (SSRF)",
}

print("=== OWASP Top 10 (2021) — সম্পূর্ণ রেফারেন্স তালিকা ===")
for code, name in owasp_top_10.items():
    print(f"{code}: {name}")

print()
print("মোট ক্যাটাগরি:", len(owasp_top_10))

    
মূল কথা · Key takeaway

OWASP Top 10 কোনো "মুখস্থ করার তালিকা" নয় — এটি একটি ম্যাপ। যখনই আপনি একটি ওয়েব অ্যাপ্লিকেশন দেখবেন, নিজেকে জিজ্ঞেস করুন: ক্লায়েন্ট থেকে সার্ভার পর্যন্ত রিকোয়েস্ট কীভাবে যাচাই হচ্ছে (A01, A07)? ডেটা কীভাবে সংরক্ষিত ও পরিবহন হচ্ছে (A02)? সার্ভার-ডেটাবেস কথোপকথনে কি অবিশ্বস্ত ইনপুট মিশে যাচ্ছে (A03)? এই প্রশ্নগুলোই পরবর্তী ১২টি পাঠের কাঠামো তৈরি করবে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ OWASP Top 10 কেন নিয়মিত আপডেট হয় — একবার তৈরি করে চিরকালের জন্য স্থির রাখা হয় না কেন?

ওয়েব প্রযুক্তি ও আক্রমণ কৌশল ক্রমাগত পরিবর্তিত হয় — নতুন ফ্রেমওয়ার্ক নতুন ধরনের বাগ নিয়ে আসে, আর পুরনো কিছু সমস্যা (যেমন XSS ২০২১-এ) অন্য ক্যাটাগরির সাথে একীভূত হয়ে যায় কারণ এর root cause ভিন্নভাবে বোঝা যায়। বাস্তব হাজার হাজার অ্যাপ্লিকেশনের ডেটা বিশ্লেষণ করেই এই তালিকা সবসময় "বর্তমান বাস্তবতা" প্রতিফলিত করার চেষ্টা করে, তাই এটি সময়ে সময়ে হালনাগাদ হওয়া জরুরি।

প্র ০২ কেন একটি নির্দিষ্ট আক্রমণ কৌশল (যেমন SQL ইনজেকশন) শেখার আগে ক্লায়েন্ট-সার্ভার-ডেটাবেস চেইনটা বোঝা জরুরি?

প্রতিটি আক্রমণ আসলে এই চেইনের কোনো একটি নির্দিষ্ট ধাপে বিশ্বাসের অপব্যবহার — SQL ইনজেকশন সার্ভার-ডেটাবেস ধাপে ঘটে, XSS সার্ভার-ক্লায়েন্ট ধাপে। চেইনটা না বুঝে শুধু "পেলোড মুখস্থ" করলে নতুন পরিস্থিতিতে প্রয়োগ করা কঠিন হয়ে যায় — কিন্তু চেইনটা বুঝলে যেকোনো নতুন ভালনারেবিলিটিও দ্রুত ধরতে পারবেন, কারণ প্রশ্নটা সবসময় একই থাকে: "এই নির্দিষ্ট লিংকে বিশ্বাস কোথায় ভেঙেছে?"

প্র ০৩ XSS ও CSRF সরাসরি ২০২১ Top 10-এর একটি নাম্বার হিসেবে নেই কেন, তবু এই কোর্সে আলাদা পাঠ (L26, L27) আছে কেন?

২০২১ সংস্করণে OWASP এগুলোকে বিস্তৃত ক্যাটাগরির (মূলত Injection ও সংশ্লিষ্ট root-cause গ্রুপিং) মধ্যে একীভূত করেছে, কিন্তু বাস্তব-জগতে এগুলো এখনো এত ব্যাপকভাবে পাওয়া যায় এবং শেখার জন্য এত গুরুত্বপূর্ণ যে একটি সম্পূর্ণ শিক্ষামূলক কোর্সে এদের নিজস্ব বিস্তারিত পাঠ থাকা প্রয়োজন — তালিকার সংক্ষিপ্ত নাম্বারিং আর একটি সমস্যার বাস্তব গুরুত্ব সবসময় এক জিনিস নয়।

অনুশীলন

  1. চিন্তা করুন: A01 (Broken Access Control) ও A03 (Injection) — এই দুটি ক্যাটাগরি ক্লায়েন্ট-সার্ভার-ডেটাবেস চেইনের কোন কোন লিংকে আক্রমণ করে তা চিহ্নিত করুন।

    A01 মূলত ক্লায়েন্ট-সার্ভার লিংকে — সার্ভার ক্লায়েন্টের রিকোয়েস্ট সঠিকভাবে যাচাই না করলে (যেমন owner চেক না করা) এটি ঘটে। A03 মূলত সার্ভার-ডেটাবেস (বা সার্ভার-সিস্টেম) লিংকে — সার্ভার যখন অবিশ্বস্ত ইনপুট সরাসরি একটি কোয়েরি বা কমান্ডে জোড়া লাগায়, তখনই এটি ঘটে।

  2. পরীক্ষা করুন: উপরের কোড সেলে owasp_top_10 ডিকশনারিতে একটি নতুন কী "A11" যোগ করে দেখুন লুপ কীভাবে স্বয়ংক্রিয়ভাবে সেটি প্রিন্ট করে।

    যেহেতু for code, name in owasp_top_10.items(): লুপটি ডিকশনারির প্রতিটি কী-ভ্যালু জোড়ার উপর কাজ করে (নির্দিষ্ট সংখ্যা হার্ডকোড করা নেই), নতুন যেকোনো এন্ট্রি যোগ করলেই তা স্বয়ংক্রিয়ভাবে আউটপুটে এবং len() গণনায় যুক্ত হয়ে যাবে — এটিই ডিকশনারি-ভিত্তিক ডেটা স্ট্রাকচারের সুবিধা।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
L16 · এক্সপ্লয়েট ডেটাবেস ও প্যাচ ম্যানেজমেন্ট