XML কনফিগারেশন (.xml)
ডব্লিউ৩সি স্ট্যান্ডার্ডএক্সটেন্সিবল মার্কআপ ল্যাঙ্গুয়েজ (XML) হলো একটি বহুমুখী মার্কআপ ভাষা যা এমন একটি বিন্যাসে নথি এনকোড করার জন্য নিয়মগুলির একটি সেট সংজ্ঞায়িত করে যা মানব-পঠনযোগ্য এবং যন্ত্র-পঠনযোগ্য উভয়ই।
অনলাইনে XML কম্প্রেস করুন
ব্যক্তিগত - ফাইল কখনোই আপনার ডিভাইস ছেড়ে যায় না
ইনস্পেক্ট ও মেটাডেটা
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে XML ফাইল শনাক্ত করে:
বাইট-লেভেল হেডার সিগনেচার (ম্যাজিক বাইটস)
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে XML ফাইল শনাক্ত করে:
হেক্স সিগনেচার (অফসেট 0):
3C 3F 78 6DASCII রিপ্রেজেন্টেশন: <?xm
স্ট্যান্ডার্ডাইজেশন: ডব্লিউ৩সি সুপারিশ (XML 1.0 পঞ্চম সংস্করণ)
প্রযুক্তিগত বৈশিষ্ট্য
| কন্টেইনার আর্কিটেকচার | কাস্টম সেমান্টিক ট্যাগ এবং অ্যাট্রিবিউট সহ অনুক্রমিক টেক্সট মার্কআপ ভাষা |
| কম্প্রেশন | বিস্তারিত ক্লোজিং ট্যাগ থাকা XML-এ Gzip / Deflate ৮৫%-৯২% কম্প্রেশন দিতে পারে। |
| বাইট এন্ডিয়াননেস | XML ঘোষণা এনকোডিং অ্যাট্রিবিউট দ্বারা নির্ধারিত UTF-8 / UTF-16 ক্যারেক্টার স্ট্রিম |
| কালার স্পেস | প্রযোজ্য নয় |
| চ্যানেল ও কাঠামো | উপাদান (<tag>), অ্যাট্রিবিউট (attr="val"), CDATA ব্লক, প্রসেসিং নির্দেশাবলী |
| সর্বোচ্চ মাত্রা | সীমাহীন অনুক্রমিক ট্রি স্ট্রাকচার |
| স্বচ্ছতা | প্রযোজ্য নয় |
| স্ট্রিমিং ও প্রোগ্রেসিভ | SAX (Simple API for XML) এবং StAX পার্সার মেমরি-দক্ষ স্ট্রিম রিডিং সক্ষম করে |
টেকনিক্যাল তুলনা ম্যাট্রিক্স: XML বনাম প্রতিযোগীগণ
| প্রযুক্তিগত বৈশিষ্ট্য | XML (বর্তমান) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| বিস্তারিততার মাত্রা | উচ্চ (ক্লোজিং ট্যাগ এবং অ্যাট্রিবিউট সিনট্যাক্স) | কম (কম্প্যাক্ট কি-ভ্যালু ফরম্যাট) | কম (ইনডেন্টেশন-ভিত্তিক) | অতি-কম (বাইনারি সিরিয়ালাইজেশন) |
| স্কিমা বৈধতা | কম্পাইলার এনফোর্সমেন্ট সহ পরিপক্ক XSD ও DTD মান | JSON স্কিমা (ঐচ্ছিক) | JSON স্কিমা / Yaml স্কিমা | কঠোর .প্রোটো স্কিমা সংজ্ঞা |
| নেমস্পেস | নেটিভ XML নেমস্পেস (xmlns) সমর্থন | কোনো নেটিভ নেমস্পেস মেকানিজম নেই | কোনো নেটিভ নেমস্পেস মেকানিজম নেই | প্যাকেজ ঘোষণা |
| রূপান্তর | XSLT ডিক্লোরেটিভ ট্রান্সফরমেশন পাইপলাইন | কাস্টম কোড / jq স্ক্রিপ্ট | কাস্টম কোড | কাস্টম কোড |
সাধারণ করাপশন মোড এবং হেক্স রিকভারি গাইড
XML পার্সিং ত্রুটি: অমিল ট্যাগ বা এন্টাইটি সংজ্ঞায়িত করা হয়নি।
মূল কারণ: এসকেপ না করা সংরক্ষিত চরিত্র (যেমন '&', '<', বা '>') অথবা ওপেনিং এবং ক্লোজিং ট্যাগের মধ্যে কেসের অমিল।
পুনরুদ্ধার: '&'-কে '&', '<'-কে '<', '>'-কে '>' দিয়ে প্রতিস্থাপন করুন, অথবা '<![CDATA[ ... ]]>' ব্লকের মধ্যে ইচ্ছামতো টেক্সট র্যাপ করুন।
নিরাপত্তা বিশ্লেষণ ও পার্সার অ্যাটাক ভেক্টর
শক্তিশালী DTD এবং এন্টাইটি এক্সপানশন ক্ষমতার কারণে এন্টারপ্রাইজ কম্পিউটিংয়ে XML পার্সারগুলো ঐতিহাসিকভাবে সবচেয়ে বেশি আক্রমণ করা উপাদানগুলোর মধ্যে একটি হয়েছে।
পরিচিত অ্যাটাক ভেক্টর
- XML এক্সটার্নাল এন্টাইটি (XXE): ক্ষতিকারক DOCTYPE স্থানীয় সার্ভার ফাইল ('file:///etc/passwd') বা অভ্যন্তরীণ নেটওয়ার্ক এন্ডপয়েন্টগুলোকে নির্দেশ করে।
- বিলিয়ন লাফস অ্যাটাক (XML বম্ব): ডিনায়াল অফ সার্ভিস ঘটানোর জন্য মেমরিতে এক্সপোনেন্সিয়ালি প্রসারিত হওয়া নেস্টেড এন্টাইটি ঘোষণা।
- XPath ইনজেকশন: স্যানিটাইজ না করা ব্যবহারকারী ইনপুট যা XML ডেটাবেসের অননুমোদিত কোয়েরি করার অনুমতি দেয়।
প্রতিরক্ষামূলক সেরা অনুশীলন: XML পার্সারগুলোতে সর্বদা এক্সটার্নাল DTD রেজোলিউশন এবং এক্সটার্নাল এন্টাইটি প্রসেসিং নিষ্ক্রিয় করুন (setFeature 'disallow-doctype-decl' ট্রু তে সেট করুন)।
ঐতিহাসিক উৎপত্তি ও মাইলফলক
প্রধান সুবিধাসমূহ ও গুণাবলী
- XSD (XML Schema Definition) বা DTD ব্যবহার করে কঠোর স্কিমা যাচাই ডেটার অখণ্ডতা নিশ্চিত করে।
- নেমস্পেস (xmlns) জটিল মাল্টি-সোর্স নথিতে উপাদান নামের সংঘর্ষ রোধ করে।
- শক্তিশালী কোয়েরি এবং ট্রান্সফরমেশন টুলচেন (XPath, XSLT, XQuery)।
কারিগরি সীমাবদ্ধতা ও অসুবিধা
- অত্যন্ত ভার্বোস: ক্লোজিং ট্যাগগুলো উপাদানের নাম পুনরাবৃত্তি করে, বড় ফাইলের সাইজ এবং উচ্চ ব্যান্ডউইথ খরচ তৈরি করে।
- DOM পার্সিং বড় মেমরি-ইনটেনসিভ অবজেক্ট ট্রি তৈরি করে।
- XML এক্সটার্নাল এন্টাইটি (XXE) এবং এন্টাইটি এক্সপানশন নিরাপত্তা ত্রুটির জন্য সংবেদনশীল।
আকর্ষণীয় কারিগরি তথ্য
- XML হলো SGML (Standard Generalized Markup Language)-এর একটি সরলীকৃত সাবসেট, যা ওয়ার্ল্ড ওয়াইড ওয়েবের উপর নির্বিঘ্নে কাজ করার জন্য ডিজাইন করা হয়েছে।
- আধুনিক অফিস নথি (.docx, .xlsx), ভেক্টর ইমেজ (.svg), এবং RSS ফিড সবই বিশেষায়িত XML ডায়ালেক্ট।
- ক্লাসিক 'বিলিয়ন লাফস' ডিনায়াল-অফ-সার্ভিস আক্রমণে মাত্র ১ কিলোবাইট নেস্টেড XML এন্টিটি ব্যবহার করে পার্স করার সময় মেমরির ব্যবহারকে সূচকীয় হারে বাড়িয়ে ৩ গিগাবাইটে নিয়ে যাওয়া যায় (lol1 দশটি lol0-কে নির্দেশ করে, এভাবে lol9 পর্যন্ত)।
সচরাচর জিজ্ঞাসিত প্রযুক্তিগত প্রশ্নাবলি
ওয়েল-ফর্মড এবং ভ্যালিড XML-এর মধ্যে পার্থক্য কী?
'ওয়েল-ফর্মড' XML মৌলিক সিনট্যাক্স নিয়মগুলো অনুসরণ করে (মিল থাকা ট্যাগ, অ্যাট্রিবিউটের চারপাশে উদ্ধৃতি, একক রুট উপাদান)। 'ভ্যালিড' XML হলো ওয়েল-ফর্মড এবং এটি একটি এক্সটার্নাল স্কিমা সংজ্ঞা (XSD বা DTD) কঠোরভাবে মেনে চলে।
বেশিরভাগ ওয়েব API-এর জন্য JSON কেন XML-কে প্রতিস্থাপন করেছে?
JSON অনেক কম বয়লারপ্লেট, দ্রুত পার্সিং এবং ছোট নেটওয়ার্ক পেলোডের সুবিধাসহ সরাসরি নেটিভ জাভাস্ক্রিপ্ট ও অন্যান্য প্রোগ্রামিং ভাষার ডেটা স্ট্রাকচারের (হ্যাশ ম্যাপ এবং অ্যারে) সঙ্গে মিলে যায়।
XML এক্সটার্নাল এন্টাইটি (XXE) ত্রুটি কী?
একটি XXE ত্রুটি ঘটে যখন একটি XML পার্সার একটি সক্রিয় এক্সটার্নাল ডকুমেন্ট টাইপ ডেফিনেশন (DTD) সহ একটি বিশ্বস্ততাহীন নথি প্রক্রিয়া করে। আক্রমণকারীরা স্থানীয় সার্ভার ফাইল (যেমন সিস্টেম কনফিগ) বা অভ্যন্তরীণ নেটওয়ার্ক URL-গুলোকে নির্দেশ করে এমন এন্টাইটি সংজ্ঞায়িত করতে পারে, যার ফলে সার্ভার গোপনীয় ডেটা পড়তে এবং প্রকাশ করতে বাধ্য হয়।