HTML এস্কেপিং হলো যে প্রক্রিয়ায় HTML-এ বিশেষ অর্থবহ অক্ষরগুলোকে তাদের সংশ্লিষ্ট এনটিটি রেফারেন্স দিয়ে প্রতিস্থাপন করা হয়। পাঁচটি অক্ষর যেগুলো অবশ্যই এস্কেপ করতে হবে সেগুলো হলো: অ্যাম্পারস্যান্ড (&), লেস-দ্যান (<), গ্রেটার-দ্যান (>), ডাবল কোট (") এবং সিঙ্গেল কোট (')। এস্কেপ না করলে ব্রাউজার এই অক্ষরগুলোকে প্রদর্শনযোগ্য টেক্সটের পরিবর্তে মার্কআপ নির্দেশনা হিসেবে ব্যাখ্যা করে, যা পেজ রেন্ডারিং নষ্ট করে এবং ইনজেকশন আক্রমণের সুযোগ তৈরি করে।
HTML স্পেসিফিকেশন (WHATWG কর্তৃক রক্ষণাবেক্ষণ করা হয়) দুই ধরনের ক্যারেক্টার রেফারেন্স সংজ্ঞায়িত করে: নামযুক্ত এনটিটি যেমন & এবং সংখ্যাসূচক এনটিটি যেমন & বা &। নামযুক্ত এনটিটি সোর্স কোডে পড়তে সহজ। সংখ্যাসূচক এনটিটি (দশমিক বা হেক্সাডেসিমাল) যেকোনো Unicode কোড পয়েন্ট প্রকাশ করতে পারে, যা নামযুক্ত এনটিটি নেই এমন অক্ষরের জন্য উপযোগী। উভয় রূপ ব্রাউজারে একই আউটপুট দেয়।
আনএস্কেপিং (ডিকোডিংও বলা হয়) হলো বিপরীত অপারেশন: এনটিটি রেফারেন্সকে তাদের আক্ষরিক অক্ষরে রূপান্তর করা। HTML সোর্স থেকে টেক্সট বের করার সময়, সিস্টেমের মধ্যে কন্টেন্ট স্থানান্তর করার সময়, বা দ্বিগুণ-এনকোড এনটিটি ডিবাগ করার সময় এটি সাধারণ প্রয়োজন। এই টুল ব্রাউজারে উভয় দিক পরিচালনা করে, তাই আপনি সেকেন্ডের মধ্যে এস্কেপিং যুক্তি যাচাই করতে বা HTML-সমৃদ্ধ উৎস থেকে সাধারণ টেক্সট পুনরুদ্ধার করতে পারেন।
HTML এস্কেপ টুল কেন ব্যবহার করবেন?
বড় টেক্সট ব্লকে হাতে করে অ্যাঙ্গেল ব্র্যাকেট ও অ্যাম্পারস্যান্ড প্রতিস্থাপন করা ক্লান্তিকর ও ত্রুটিপ্রবণ। একটি নিবেদিত টুল কোনো ইনস্টলেশন ছাড়াই এক ধাপে আপনার ইনপুট রূপান্তর করে।
⚡
তাৎক্ষণিক রূপান্তর
টেক্সট বা HTML পেস্ট করুন এবং সাথে সাথে এস্কেপ বা আনএস্কেপ করা আউটপুট পান। সমস্ত প্রক্রিয়াকরণ JavaScript-এ স্থানীয়ভাবে হওয়ায় সার্ভারের জন্য অপেক্ষা করতে হয় না।
🔒
গোপনীয়তা-বান্ধব প্রসেসিং
আপনার ইনপুট কখনো ব্রাউজার ছেড়ে যায় না। কোনো সার্ভারে কিছু পাঠানো বা কোথাও সংরক্ষণ করা হয় না, তাই ক্রেডেনশিয়াল, API কি বা অভ্যন্তরীণ কোড সম্বলিত মার্কআপ নিরাপদে এস্কেপ করতে পারবেন।
📋
কোনো অ্যাকাউন্ট বা সেটআপ নেই
পেজ খুলুন এবং পেস্ট করা শুরু করুন। কোনো লগইন, ইমেইল নিবন্ধন বা ইনস্টল করার সফটওয়্যার নেই। আধুনিক ব্রাউজার সহ যেকোনো ডিভাইসে কাজ করে।
🌐
সম্পূর্ণ এনটিটি কভারেজ
পাঁচটি বাধ্যতামূলক HTML বিশেষ অক্ষর এবং সংখ্যাসূচক এনটিটি (দশমিক ও হেক্সাডেসিমাল) পরিচালনা করে। রাউন্ড-ট্রিপ রূপান্তর সমর্থন করে: এস্কেপ করে তারপর আনএস্কেপ করলে মূল স্ট্রিং ফিরে আসে।
HTML এস্কেপের ব্যবহারের ক্ষেত্র
ফ্রন্টেন্ড ডেভেলপার: ব্যবহারকারীর ইনপুট প্রদর্শন
পেজে ব্যবহারকারীর দেওয়া টেক্সট রেন্ডার করার সময়, ব্রাউজারকে এটি HTML ট্যাগ হিসেবে ব্যাখ্যা করা থেকে বিরত রাখতে প্রথমে এস্কেপ করুন। যেকোনো টেমপ্লেটে যা কাঁচা স্ট্রিং আউটপুট করে তাতে সংরক্ষিত XSS-এর বিরুদ্ধে এটি প্রাথমিক প্রতিরক্ষা।
ব্যাকেন্ড ইঞ্জিনিয়ার: HTML রেসপন্স তৈরি করা
স্ট্রিং কনক্যাটেনেট করে HTML তৈরি করা সার্ভার-সাইড কোডে সন্নিবেশের আগে ডায়নামিক ভ্যালুগুলো এস্কেপ করতে হবে। নেস্টেড কোট-এর মতো প্রান্তিক ক্ষেত্রের জন্য আপনার এস্কেপিং ফাংশন সঠিক আউটপুট দিচ্ছে কিনা যাচাই করতে এই টুল ব্যবহার করুন।
DevOps: HTML-এ কনফিগ এম্বেড করা
HTML পেজে ইনলাইন JSON বা শেল কমান্ড (যেমন স্ক্রিপ্ট ট্যাগ বা ডেটা অ্যাট্রিবিউটে) এস্কেপিং প্রয়োজন। আপনার কনফিগ স্নিপেটের অ্যাঙ্গেল ব্র্যাকেট ও অ্যাম্পারস্যান্ড সঠিকভাবে এনকোড করা আছে কিনা যাচাই করুন।
QA ইঞ্জিনিয়ার: XSS ভেক্টর পরীক্ষা করা
সাধারণ XSS পেলোড এই টুলে পেস্ট করুন নিশ্চিত করতে যে আপনার অ্যাপ্লিকেশনের আউটপুট সঠিকভাবে এস্কেপ করা সংস্করণের সাথে মেলে। আপনার অ্যাপ যা তৈরি করে তার সাথে অক্ষর ধরে ধরে এস্কেপ করা আউটপুট তুলনা করুন।
টেকনিক্যাল লেখক: ডকুমেন্টেশনে কোড নমুনা
HTML-ভিত্তিক ডকুমেন্টে (Jekyll, Hugo, কাস্টম CMS) কোড স্নিপেট প্রকাশ করতে জেনেরিক টাইপ সিনট্যাক্স ও টেমপ্লেট প্লেসহোল্ডারের জন্য অ্যাঙ্গেল ব্র্যাকেট এস্কেপ করতে হয়। আপনার কোড নমুনা পেস্ট করুন এবং প্রতিটি বিশেষ অক্ষর তাৎক্ষণিকভাবে এনকোড হয়ে যাবে।
শিক্ষার্থী: HTML এনটিটি শেখা
যেকোনো অক্ষর টাইপ বা পেস্ট করুন এবং তার নামযুক্ত ও সংখ্যাসূচক এনটিটি রূপ দেখুন। নন-ব্রেকিং স্পেস, এম-ড্যাশ এবং Unicode প্রতীকের মতো প্রান্তিক ক্ষেত্র নিয়ে পরীক্ষা-নিরীক্ষা করে HTML ক্যারেক্টার এনকোডিং কীভাবে কাজ করে তা বুঝুন।
HTML এনটিটি রেফারেন্স সারণি
নিচের সারণিতে সাধারণভাবে ব্যবহৃত HTML এনটিটিগুলো রয়েছে। পাঁচটি বিশেষ অক্ষর (& < > " ') HTML কন্টেন্ট ও অ্যাট্রিবিউট মানে সর্বদা এস্কেপ করতে হবে। অন্যান্য এনটিটি ঐচ্ছিক কিন্তু সোর্স কোডে টাইপ করা কঠিন বা অস্পষ্ট অক্ষরের জন্য উপযোগী।
দুটি অপারেশন পরস্পরের বিপরীত। ভুল দিক বেছে নিলে দ্বিগুণ-এনকোড বা অসুরক্ষিত আউটপুট তৈরি হয়।
এস্কেপ (এনকোড)
HTML-এ অবিশ্বস্ত বা গতিশীল টেক্সট সন্নিবেশ করার সময় ব্যবহার করুন। আক্ষরিক < কে <-তে রূপান্তর করে যাতে ব্রাউজার ট্যাগ শুরুর পরিবর্তে অক্ষরটি প্রদর্শন করে। ব্যবহারকারীর ইনপুট, লগ এন্ট্রি বা মার্কআপ থাকতে পারে এমন যেকোনো স্ট্রিং রেন্ডার করার আগে প্রয়োগ করুন।
আনএস্কেপ (ডিকোড)
HTML সোর্স থেকে সাধারণ টেক্সট বের করার সময় ব্যবহার করুন। <-কে <-তে রূপান্তর করে। CMS থেকে কন্টেন্ট স্থানান্তর করার সময়, স্ক্র্যাপ করা HTML পার্স করার সময়, বা &amp;-এর মতো দ্বিগুণ-এনকোড স্ট্রিং ঠিক করার সময় প্রয়োগ করুন।
কোড উদাহরণ
নিচে চারটি ভাষায় HTML এস্কেপিং ও আনএস্কেপিংয়ের কার্যকরী উদাহরণ রয়েছে। প্রতিটি স্নিপেট উভয় দিক এবং নেস্টেড কোট ও সংখ্যাসূচক এনটিটির মতো প্রান্তিক ক্ষেত্র পরিচালনা করে।
HTML এস্কেপিং ও URL এনকোডিংয়ের মধ্যে পার্থক্য কী?
HTML এস্কেপিং HTML-এ বিশেষ অক্ষরগুলো (< > & " ') <-এর মতো এনটিটি রেফারেন্স দিয়ে প্রতিস্থাপন করে যাতে সেগুলো টেক্সট হিসেবে প্রদর্শিত হয়। URL এনকোডিং (পার্সেন্ট-এনকোডিং) URL-এ অনিরাপদ অক্ষরগুলো %XX হেক্স সিকোয়েন্স দিয়ে প্রতিস্থাপন করে। উভয় ভিন্ন প্রসঙ্গ সুরক্ষা করে: HTML এস্কেপিং মার্কআপ ইনজেকশন প্রতিরোধ করে, আর URL এনকোডিং বৈধ কোয়েরি স্ট্রিং ও পাথ সেগমেন্ট নিশ্চিত করে।
HTML-এ কোন অক্ষরগুলো এস্কেপ করতে হবে?
সর্বদা এস্কেপ করতে হবে এমন পাঁচটি অক্ষর হলো: & (অ্যাম্পারস্যান্ড), < (লেস-দ্যান), > (গ্রেটার-দ্যান), " (অ্যাট্রিবিউটের ভেতরে ডাবল কোট) এবং ' (অ্যাট্রিবিউটের ভেতরে সিঙ্গেল কোট)। এগুলোর যেকোনোটি এস্কেপ না করলে রেন্ডারিং নষ্ট হতে পারে বা ক্রস-সাইট স্ক্রিপ্টিং দুর্বলতা তৈরি হতে পারে।
' কি HTML5-এ বৈধ?
হ্যাঁ। ' নামযুক্ত এনটিটি HTML5 স্পেসিফিকেশনে সংজ্ঞায়িত এবং সমস্ত আধুনিক ব্রাউজার সমর্থন করে। এটি HTML 4-এর অংশ ছিল না, যা শুধুমাত্র &, <, > এবং " স্বীকার করত। খুব পুরনো HTML 4 পার্সার সমর্থন করতে হলে পরিবর্তে সংখ্যাসূচক রূপ ' ব্যবহার করুন।
&amp;-এর মতো দ্বিগুণ-এনকোড HTML এনটিটি কীভাবে ঠিক করবেন?
দ্বিগুণ এনকোডিং ঘটে যখন ইতিমধ্যে এস্কেপ করা স্ট্রিং দ্বিতীয়বার এস্কেপিং ফাংশনের মধ্য দিয়ে যায়। সমাধান হলো আউটপুট আর না বদলানো পর্যন্ত আনএস্কেপ করতে থাকা। দ্বিগুণ-এনকোড স্ট্রিং এই টুলে আনএস্কেপ মোডে পেস্ট করুন, তারপর & রেফারেন্স থাকলে আবার চালান। দ্বিগুণ এনকোডিং প্রতিরোধ করতে, এস্কেপ ফাংশন প্রয়োগ করার আগে ইনপুট ইতিমধ্যে এস্কেপ করা কিনা পরীক্ষা করুন।
JavaScript স্ট্রিংয়ের ভেতরে কি HTML এনটিটি ব্যবহার করতে পারি?
HTML এনটিটি HTML পার্সার দ্বারা ব্যাখ্যা করা হয়, JavaScript ইঞ্জিন দ্বারা নয়। একটি স্ক্রিপ্ট ব্লকের ভেতরে, পেজটি HTML পার্সার প্রক্রিয়া করার পরে কোড চলে, তাই স্ক্রিপ্ট ব্লকে < JavaScript দেখার আগেই < হয়ে যায়। ইনলাইন ইভেন্ট হ্যান্ডলারের (onclick ইত্যাদি) জন্য, অ্যাট্রিবিউট মান প্রথমে HTML-ডিকোড হয়, তারপর JavaScript হিসেবে কার্যকর হয়। বাহ্যিক .js ফাইলে, এনটিটির কোনো বিশেষ অর্থ নেই এবং আক্ষরিক টেক্সট হিসেবে গণ্য হয়।
PHP-এ htmlspecialchars এবং htmlentities-এর মধ্যে পার্থক্য কী?
htmlspecialchars() কেবল পাঁচটি বিশেষ অক্ষর (& < > " ') এস্কেপ করে যা HTML কাঠামোকে প্রভাবিত করে। htmlentities() সেই পাঁচটির পাশাপাশি প্রতিটি অক্ষর যার নামযুক্ত HTML এনটিটি আছে, যেমন কপিরাইট চিহ্ন ও উচ্চারণচিহ্ন সহ অক্ষর, এস্কেপ করে। নিরাপত্তার জন্য ENT_QUOTES সহ htmlspecialchars() যথেষ্ট। htmlentities() তখন উপযোগী যখন UTF-8 পরিচালনা করতে পারে না এমন সিস্টেমের জন্য ASCII-নিরাপদ আউটপুট প্রয়োজন।
XSS প্রতিরোধে কি HTML এস্কেপিং যথেষ্ট?
HTML এস্কেপিং সবচেয়ে সাধারণ ক্ষেত্রে XSS প্রতিরোধ করে: HTML এলিমেন্ট কন্টেন্ট বা অ্যাট্রিবিউট মানে অবিশ্বস্ত টেক্সট সন্নিবেশ করা। এটি অন্যান্য ইনজেকশন প্রসঙ্গ সুরক্ষা করে না। স্ক্রিপ্ট ব্লকে ব্যবহারকারীর ডেটা সন্নিবেশ করতে JavaScript স্ট্রিং এস্কেপিং প্রয়োজন। স্টাইল অ্যাট্রিবিউটে সন্নিবেশ করতে CSS এস্কেপিং প্রয়োজন। URL অ্যাট্রিবিউটে (href, src) সন্নিবেশ করতে URL বৈধতা যাচাই ও এনকোডিং প্রয়োজন। সম্পূর্ণ XSS প্রতিরক্ষা প্রতিটি সন্নিবেশ বিন্দুতে প্রসঙ্গ-নির্দিষ্ট এস্কেপিং প্রয়োগ করে।