সিকিউরিটি টেস্টিং ফান্ডামেন্টাল
এই পাঠে যা শিখবেন
- সিকিউরিটি টেস্টিং একটি টেস্টিং ডিসিপ্লিন হিসেবে ঠিক কী বোঝায়, এবং এটি "অ্যাটাক শেখা" থেকে কীভাবে আলাদা
- সাধারণভাবে সুপরিচিত দুর্বলতার ক্যাটাগরিগুলো — একজন টেস্টারের দৃষ্টিকোণ থেকে প্রতিটির জন্য কী টেস্ট করা হয়
- একটি টেস্ট প্রসেসে সিকিউরিটি টেস্টিং কোথায় কোথায় ফিট করে — ফাংশনাল টেস্ট থেকে পেনিট্রেশন টেস্টিং পর্যন্ত
- একটি সত্যিকারের চলমান কোড ডেমো — কিওয়ার্ড-ভিত্তিক লজিক দিয়ে সিকিউরিটি ফাইন্ডিং ক্লাসিফাই করা
১ · সিকিউরিটি টেস্টিং কী, এবং এটি কেন আলাদা
সিকিউরিটি টেস্টিংSecurity Testingএকটি সফটওয়্যার সিস্টেমে এমন দুর্বলতা খুঁজে বের করার পরিকল্পিত প্রক্রিয়া, যা কোনো অননুমোদিত পক্ষ কাজে লাগাতে পারে — যাচাইযোগ্য টেস্ট কেস হিসেবে, ঠিক যেভাবে ফাংশনাল টেস্টিং করা হয়। এই কোর্সে আমরা টেস্টিং প্রসেস শেখাচ্ছি — তাই এই মডিউলের ফোকাস "কীভাবে একটি নির্দিষ্ট অ্যাটাক টেকনিক কাজ করে" তার গভীর টেকনিক্যাল বিবরণ নয়, বরং একজন টেস্টার হিসেবে কী টেস্ট করতে হবে, কখন, এবং কীভাবে সেটিকে টেস্ট প্ল্যানে অন্তর্ভুক্ত করতে হবে। অ্যাটাক ও ডিফেন্স মেকানিজমের টেকনিক্যাল গভীরতা (যেমন একটি নির্দিষ্ট এক্সপ্লয়েট ঠিক কীভাবে কাজ করে) Cybersecurity কোর্সে বিস্তারিতভাবে কভার করা হয়েছে — এখানে সেই বেসিক ধারণাগুলো ধরে নেওয়া হয়েছে।
একজন ফাংশনাল টেস্টার যেমন জিজ্ঞেস করেন "সঠিক ইনপুটে সিস্টেম সঠিক আউটপুট দেয় কি?", একজন সিকিউরিটি-সচেতন টেস্টার তেমনি জিজ্ঞেস করেন "একজন দূরভিসন্ধিমূলক ব্যবহারকারী এই একই ইনপুট পয়েন্ট ব্যবহার করে সিস্টেমকে ভুল কাজ করাতে পারবে কি?" — এটি একটি ভিন্ন মাইন্ডসেট, কিন্তু একই টেস্ট-ডিজাইন-ও-এক্সিকিউট শৃঙ্খলার অংশ যা এই কোর্স জুড়ে শেখানো হয়েছে।
২ · সাধারণভাবে পরিচিত দুর্বলতার ক্যাটাগরি
নিচের ক্যাটাগরিগুলো ইন্ডাস্ট্রিতে ব্যাপকভাবে পরিচিত এবং আলোচিত — এগুলো কোনো নির্দিষ্ট তালিকার হুবহু র্যাংকিং বা ভাষা হিসেবে নয়, বরং সাধারণ, সুপরিচিত ধরন হিসেবে উপস্থাপন করা হলো। প্রতিটির পাশে লেখা হয়েছে একজন টেস্টার হিসেবে কী যাচাই করা উচিত — অ্যাটাক ঠিক কীভাবে বাস্তবায়িত হয় তা নয়।
টেস্টার হিসেবে যাচাই করুন: ইনপুট ফিল্ডে অস্বাভাবিক ক্যারেক্টার (কোট, সেমিকোলন, কমেন্ট মার্কার) দিলে সিস্টেম কি ভুল ব্যাখ্যা করে চালিয়ে দেয়, নাকি নিরাপদে প্রত্যাখ্যান/এসকেপ করে (M9/L38-এ বিস্তারিত)।
টেস্টার হিসেবে যাচাই করুন: ভুল পাসওয়ার্ড/টোকেন প্রত্যাখ্যাত হয় কি না, সেশন যথাসময়ে মেয়াদোত্তীর্ণ হয় কি না (M9/L39-এ বিস্তারিত)।
টেস্টার হিসেবে যাচাই করুন: পাসওয়ার্ড, কার্ড নম্বর, ব্যক্তিগত তথ্য রেসপন্স বা লগে প্লেইনটেক্সটে দেখা যাচ্ছে কি না।
টেস্টার হিসেবে যাচাই করুন: একজন সাধারণ ইউজার সরাসরি URL/API কল করে অ্যাডমিন-অনলি ফিচার বা অন্য ইউজারের ডেটা অ্যাক্সেস করতে পারে কি না (M9/L39-এ বিস্তারিত)।
টেস্টার হিসেবে যাচাই করুন: ডিফল্ট ক্রেডেনশিয়াল, ডিবাগ মোড, বা অতিরিক্ত ভার্বোজ এরর মেসেজ প্রোডাকশনে খোলা রয়ে গেছে কি না।
টেস্টার হিসেবে যাচাই করুন: সন্দেহজনক কার্যকলাপ (বারবার লগইন ব্যর্থতা) আদৌ লগ/অ্যালার্ট হয় কি না — না হলে একটি ব্রিচ শনাক্ত হতে দেরি হবে।
৩ · একটি টেস্ট প্রসেসে সিকিউরিটি টেস্টিং কোথায় ফিট করে
সিকিউরিটি টেস্টিং একটি একক ধাপ নয় — এটি ক্রমেই গভীর হতে থাকা কয়েকটি স্তরে ঘটে।
লক্ষ্য করুন — এই তিনটি স্তরই এই কোর্সের আগের মডিউলগুলোতে শেখানো একই নীতির উপর দাঁড়িয়ে আছে: পরিকল্পিত টেস্ট কেস ডিজাইন (M2), স্বয়ংক্রিয় এক্সিকিউশন (M3-M7), এবং ফলাফল বিশ্লেষণ — শুধু "কী ভুল হতে পারে" এই প্রশ্নের দৃষ্টিভঙ্গি সিকিউরিটি-নির্দিষ্ট।
৪ · একটি সত্যিকারের ফাইন্ডিং ক্লাসিফায়ার
একটি QA টিম প্রায়ই বিভিন্ন উৎস (ম্যানুয়াল টেস্টিং, স্ক্যানার, বাগ রিপোর্ট) থেকে আসা সিকিউরিটি ফাইন্ডিংগুলোকে ক্যাটাগরি অনুযায়ী গুছিয়ে রাখে। নিচের কোড সেলে একটি সহজ কিওয়ার্ড-ভিত্তিক ক্লাসিফায়ার আছে — এটি সত্যিকারের স্ট্রিং ম্যাচিং চালিয়ে প্রতিটি ফাইন্ডিং টেক্সটকে ক্যাটাগরিতে ভাগ করে, হার্ডকোড করা উত্তর নয়।
FINDING_KEYWORDS = {
"injection": ["sql", "command injection", "os.system", "query concatenation"],
"broken_authentication": ["session token", "password reset", "brute force", "weak password policy"],
"sensitive_data_exposure": ["plaintext", "unencrypted", "exposed api key", "pii leak"],
"broken_access_control": ["privilege escalation", "unauthorized access", "missing permission check"],
"security_misconfiguration": ["default credentials", "debug mode enabled", "verbose error message"],
}
def classify_finding(description):
lowered = description.lower()
matches = []
for category, keywords in FINDING_KEYWORDS.items():
if any(keyword in lowered for keyword in keywords):
matches.append(category)
return matches if matches else ["uncategorized"]
findings = [
"Login form accepts ' OR 1=1 -- as username, bypassing authentication (SQL injection)",
"Session tokens do not expire after logout, allowing token reuse",
"API returns customer card numbers in plaintext in the response body",
"A regular user can call /admin/delete-user without any permission check",
"Staging server is running with debug mode enabled and default credentials",
]
for finding in findings:
categories = classify_finding(finding)
print(f"{categories} <- {finding}")
classify_finding সেটিকে injection হিসেবে ধরতে পারে কারণ ফাংশনটি পুরো টেক্সট
লোয়ারকেস করে কিওয়ার্ড খোঁজে, নির্দিষ্ট কোনো একটি বাক্যাংশে সীমাবদ্ধ থাকে না। এটি একটি সরল উদাহরণ — বাস্তব
টুল আরও পরিশীলিত NLP বা রুল-ইঞ্জিন ব্যবহার করে, কিন্তু মূল ধারণা একই: টেক্সট বিশ্লেষণ করে স্বয়ংক্রিয়ভাবে
শ্রেণীবিভাগ করা।
সিকিউরিটি টেস্টিং একটি স্বতন্ত্র জাদু নয় — এটি টেস্টিং-এর একই নিয়মতান্ত্রিক শৃঙ্খলা, শুধু "দূরভিসন্ধিমূলক ইনপুট/ব্যবহারকারী" দৃষ্টিকোণ থেকে প্রয়োগ করা। সাধারণভাবে পরিচিত দুর্বলতার ক্যাটাগরিগুলো জানা থাকলে একজন টেস্টার সচেতনভাবে টেস্ট কেস ডিজাইন করতে পারেন — পরের তিনটি পাঠে (L37-L39) আমরা তিনটি নির্দিষ্ট ক্যাটাগরির জন্য সত্যিকারের, চলমান টেস্ট কোড লিখব।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ এই পাঠ কেন "কীভাবে অ্যাটাক করা হয়" শেখানোর বদলে "কী টেস্ট করা উচিত" শেখানোর উপর ফোকাস করেছে?
কারণ এই কোর্সের লক্ষ্য টেস্টিং প্রসেস ও পদ্ধতি শেখানো, অ্যাটাক টেকনিক নয় — একজন টেস্টারের কাজ হলো পদ্ধতিগতভাবে দুর্বলতা খুঁজে বের করার জন্য সঠিক টেস্ট কেস ডিজাইন করা, ঠিক যেমন ফাংশনাল টেস্টিং-এ করা হয়। অ্যাটাক কীভাবে কার্যকর হয় তার গভীর টেকনিক্যাল বিবরণ Cybersecurity কোর্সের বিষয়।
প্র ০২ কেন "নির্দিষ্ট OWASP Top-10 র্যাংকিং" এই পাঠে হুবহু উদ্ধৃত করা হয়নি, শুধু সাধারণ ক্যাটাগরি হিসেবে উপস্থাপন করা হয়েছে?
কারণ নির্দিষ্ট র্যাংকিং ও শব্দচয়ন একটি নির্দিষ্ট বহিরাগত সংস্থার প্রকাশনার মালিকানাধীন কন্টেন্ট, এবং সেই র্যাংকিং সময়ের সাথে পরিবর্তিত হয়। এই ক্যাটাগরিগুলো বহু বছর ধরে ইন্ডাস্ট্রিতে সাধারণভাবে সুপরিচিত — তাই সঠিক ধারণাটুকু বোঝানোর জন্য সাধারণ বর্ণনা যথেষ্ট, কোনো নির্দিষ্ট তালিকার হুবহু দাবি না করেই।
প্র ০৩
উপরের কোড সেলে classify_finding একটি ফাইন্ডিংকে একাধিক ক্যাটাগরিতে ফেলতে পারে কি না?
কেন এমন ডিজাইন করা হয়েছে?
হ্যাঁ পারে — ফাংশনটি প্রতিটি ক্যাটাগরির কিওয়ার্ড আলাদাভাবে চেক করে এবং মিল পেলে তালিকায় যোগ করে, তাই একটি ফাইন্ডিং একাধিক ক্যাটাগরির কিওয়ার্ড ধারণ করলে একাধিক ক্যাটাগরিতে পড়বে। এটি ইচ্ছাকৃত — বাস্তবে একটি দুর্বলতা প্রায়ই একাধিক ক্যাটাগরিতে ওভারল্যাপ করে (যেমন একটি মিসকনফিগারেশনই সেনসিটিভ ডেটা এক্সপোজ করে দিতে পারে), তাই একটি কঠোর "এক ফাইন্ডিং = এক ক্যাটাগরি" মডেল বাস্তবতাকে সঠিকভাবে ধরে না।
অনুশীলন
-
চিন্তা করুন: আপনার পরিচিত কোনো ওয়েব অ্যাপ্লিকেশনের একটি লগইন ফর্মের কথা ভাবুন। উপরের ছয়টি
ক্যাটাগরির মধ্যে কোনটি সবচেয়ে আগে টেস্ট করা উচিত বলে আপনার মনে হয়, এবং কেন?
একটি ন্যায্য উত্তর: ব্রোকেন অথেন্টিকেশন — কারণ লগইন ফর্মই সরাসরি এই ক্যাটাগরির সাথে সম্পর্কিত (ভুল পাসওয়ার্ড প্রত্যাখ্যান, সেশন মেয়াদ, ব্রুট-ফোর্স প্রতিরোধ)। তবে ইনজেকশনও যুক্তিসঙ্গত উত্তর, কারণ লগইন ফর্মের ইনপুট ফিল্ডই প্রায়ই ইনজেকশন টেস্টের প্রথম লক্ষ্য (M9/L38-এ বিস্তারিত)।
-
পরীক্ষা করুন: উপরের কোড সেলে
findingsতালিকায় নিজের একটি নতুন বাক্য যোগ করুন যাতে "unauthorized access" এবং "plaintext" দুটো শব্দই থাকে, তারপর Run চেপে দেখুনclassify_findingএটিকে কী কী ক্যাটাগরিতে ফেলে।এই বাক্যটি
broken_access_control(কারণ "unauthorized access" কিওয়ার্ড আছে) এবংsensitive_data_exposure(কারণ "plaintext" কিওয়ার্ড আছে) — এই দুটো ক্যাটাগরিতেই পড়বে, কারণ ফাংশনটি প্রতিটি ক্যাটাগরি স্বাধীনভাবে চেক করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ SAST/DAST, ইনপুট ভ্যালিডেশন, অথেন্টিকেশন/অথোরাইজেশন টেস্টিং ও SDLC-তে সিকিউরিটি — এই মডিউলের বাকি পাঠগুলো পরবর্তী।
- Cybersecurity কোর্স সহোদর কোর্স অ্যাটাক ও ডিফেন্স মেকানিজমের টেকনিক্যাল গভীরতা সেই কোর্সেই কভার করা হয়েছে — এই কোর্স টেস্টিং প্রসেসে ফোকাস করে।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design, Software Engineering & Git, Theory of Computation, Engineering Economics, Full-Stack Web Frameworks, Mobile App Development, Ethics in Computing & AI Safety ও Software Testing & Quality Assurance — সব এক জায়গায়।