⚡Shadow Academy
একাডেমি / অধ্যায় 55
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
অধ্যায় 55 / ১০০গল্প · ল্যাব · কুইজ

অধ্যায় 55: XXE & XML Parser Security

XML external entity parsing ও parser hardening.

এই অধ্যায়ে কী শিখবে

⏱ আনুমানিক সময়: ১৫–২০ মিনিট · পূর্বশর্ত: আগের অধ্যায়ের ধারণা

০ / ১০০ অধ্যায়চালিয়ে যাও: অধ্যায় 56

অগ্রগতি এই browser-এ স্থানীয়ভাবে সংরক্ষিত হবে।

গল্প: অধ্যায় 55: XXE & XML Parser Security

জাদুঘরের XML catalog-এর নতুন parser বাইরের entity পড়তে পারত। ইরা কোনো live file না খুলে configuration checklist বানাল—DTD, external entity, network access, input size ও resource limit। বৃষ্টি ম্যাম বললেন, “সৌরভ সোনা, আগে সমস্যাটাকে ছোট করে বুঝি—কোন সম্পদ, কার অনুমতি, আর কোন সীমার মধ্যে কাজ?” সৌরভ বোর্ডে একটি data-flow এঁকে সম্ভাব্য ভুলের জায়গা চিহ্নিত করল। তারা বাস্তব কোনো account বা website-এ হাত না দিয়ে synthetic উদাহরণে hypothesis যাচাই করল।

বৃষ্টি ম্যাম জিজ্ঞেস করলেন, “সৌরভ, গল্পের চরিত্রটি কোন সীমা পেরোতে দিচ্ছিল?” তারা বোর্ডে asset, actor, trust boundary আর expected outcome লিখল। ভুলটি শুধু একটি tool-এর সমস্যা নয়; server কী অনুমতি দিচ্ছে, আর সেই সিদ্ধান্ত যাচাই করা যায় কি না—সেটিই মূল প্রশ্ন।

তারপর তারা বাস্তব service ছুঁয়ে না দেখে synthetic record-এ একই decision অনুশীলন করল। প্রথমে স্বাভাবিক অনুমোদিত flow, তারপর ভুল পরিচয়/invalid state, শেষে fix-এর পর retest। বৃষ্টি ম্যাম বললেন, “সোনা, নিরাপদ শেখা মানে কেবল সমস্যা দেখানো নয়—সীমা মেনে প্রতিরক্ষা প্রমাণ করাও।”

বৃষ্টি ম্যাম সহজ করে বলছে

সমস্যা: XXE local resource পড়া, network request বা resource exhaustion ঘটাতে পারে।

মূল নিয়ম: DTD/entity resolution ও network access বন্ধ করে size/depth limit বসানো। এই নিয়মটি XML external entity parsing ও parser hardening.-এর সঙ্গে মিলিয়ে threat boundary-তে enforce করো; শুধু UI, client-side check বা model instruction-এ ভরসা কোরো না। প্রত্যাখ্যানের কারণ user-কে নিরাপদভাবে জানাও, আর diagnosis-এর জন্য সীমিত redacted event রাখো।

নিরাপদ defensive উদাহরণ

নিচের snippet-টি illustrative pseudocode। এটি কোনো বাইরের target-এ পরীক্ষা চালায় না; control কীভাবে server-side-এ বসে তা দেখায়।

parser = SafeXMLParser(resolve_entities=False, no_network=True)
parser.max_depth = 32

Review checklist: explicit scope, least privilege, malformed/unauthorized negative case, privacy-safe logging এবং post-fix retest।

আজকের অনুশীলন

XML import parser-এ external entity resolve হওয়ার দরকার নেই। parser কীভাবে configure করবে? কেবল isolated mock বা লিখিত অনুমতিপ্রাপ্ত lab-এ চেষ্টা করো। expected result এবং deny case লিখে রাখো।

প্রতিরক্ষা checkpoint

DTD/entity resolution ও network access বন্ধ করে size/depth limit বসানো Disable external entities/DTDs, resource limits, safer formats. remediation-এর owner ও retest ফলাফলও নথিভুক্ত করো।

Review: owner, telemetry, failure behavior ও retest ফলাফল নথিভুক্ত করো।

Portfolio note

Scope, synthetic setup, পর্যবেক্ষণ, ঝুঁকি, remediation ও retest লিখে রাখো। secret বা ব্যক্তিগত তথ্য যোগ কোরো না।

বিশ্বস্ত reference

আরও পড়ার জন্য প্রতিষ্ঠিত security standards ও guidance দেখো; প্রতিটি lab অনুমোদিত বা synthetic environment-এ করো।