نحوه استفاده
- برای امنسازی متن برای HTML گزینه کدگذاری و برای تبدیل موجودیتها به نویسهها گزینه کدگشایی را انتخاب کنید.
- هنگام کدگذاری، انتخاب کنید که حروف اکسنتدار و نمادها همانطور بمانند یا به موجودیت تبدیل شوند.
- متن خود را تایپ یا جایگذاری کنید؛ نتیجه بلافاصله بهروز میشود.
- نتیجه را کپی کنید یا از «استفاده از خروجی بهعنوان ورودی» برای بررسی اینکه دوباره به متن اصلی کدگشایی میشود استفاده کنید.
نحوه کار
در HTML چند نویسه معنای ویژه دارند: < آغاز یک برچسب است، & آغاز یک موجودیت است و " یا ' مقدار یک ویژگی را پایان میدهند. برای نمایش آنها بهصورت متن، باید بهشکل ارجاع نویسه نوشته شوند: < برای <، > برای >، & برای &، " برای " و ' برای '. آپاستروف از شکل عددی استفاده میکند چون ' در HTML 4 تعریف نشده است.
همهٔ نویسههای دیگر، از جمله حروف اعرابدار، متن چینی و ایموجی، میتوانند مستقیماً نوشته شوند وقتی صفحه با UTF-8 ذخیره و ارائه میشود که پیشفرض وبسایتهای مدرن است. تبدیل آنها به موجودیت تنها برای سیستمهایی لازم است که با UTF-8 ایمن نیستند، مانند برخی قالبهای قدیمی ایمیل یا پایگاهدادهها. سپس میتوانید موجودیتهای نامدار مانند é را در جایی که نام رایجی وجود دارد (با یک جایگزین عددی برای بقیه) انتخاب کنید یا ارجاعهای عددی مانند é را برای هر نویسه به کار ببرید.
رمزگشایی از تجزیهگر HTML مرورگر استفاده نمیکند. از جدول داخلی شامل همهٔ ۲۵۲ موجودیت نامدار HTML 4.01، ' و حدود ۳۰ نام رایج HTML5 بههمراه ارجاعهای دهدهی و شانزدهدهی استفاده میکند. ارجاعهای عددی از قواعد HTML5 پیروی میکنند: �، مقادیر جانشین و مقادیر بالاتر از U+10FFFF به نویسهٔ جایگزین تبدیل میشوند و مقادیر ۱۲۸ تا ۱۵۹ بهصورت Windows-1252 خوانده میشوند؛ بنابراین – به خط تیرهٔ کوتاه تبدیل میشود. چند نام قدیمی مانند & و © نیز بدون نقطهویرگول پایانی پذیرفته میشوند، همانطور که مرورگرها انجام میدهند. HTML5 بیش از ۲۰۰۰ نام تعریف میکند؛ نامهای کمیاب خارج از جدول بدون تغییر باقی میمانند و فهرست میشوند.
اسکیپکردن متن پیش از قرار دادن آن در HTML دفاع مهمی در برابر حملات اسکریپت بینسایتی (XSS) است، اما این کار فقط برای محتوای عنصر و مقادیر ویژگی داخل گیومه درست است. متن قرارگرفته در بلوک <script>، ویژگی style یا URL به اسکیپ متفاوتی نیاز دارد.
نمونهها
نمایش کد در صفحه وب
برای نمایش <div class="box"> بهصورت متن در یک نوشتهٔ وبلاگ، آن را به <div class="box> کدگذاری کنید. مرورگر برچسب اصلی را نشان میدهد بهجای آنکه عنصری بسازد.
آمادهسازی متن برای قالب قدیمی ایمیل
با گزینه «موجودیتهای نامدار در صورت وجود»، «Café – 5 €» به Café – 5 € تبدیل میشود که حتی اگر ایمیل با مجموعه نویسههای غیر UTF-8 ارسال شود، درست نمایش داده میشود.
پاکسازی متن استخراجشده از وب یا صادرشده
یک خروجی CMS شامل Fish & Chips – £9 است. با رمزگشایی، Fish & Chips – £9 به دست میآید و برای چسباندن در صفحه گسترده آماده است.
پرسشهای متداول
کدام نویسهها باید در HTML اسکیپ شوند؟
در محتوای عنصر، & و < باید اسکیپ شوند (اسکیپ > نیز توصیه میشود). درون مقادیر ویژگی، نویسه نقلقولی که مقدار را احاطه کرده است نیز باید اسکیپ شود. اسکیپ کردن هر پنج نویسه (& < > " ') در همهجا قاعده ساده و امنی است که این ابزار دنبال میکند.
تفاوت بین موجودیتهای نامدار و عددی چیست؟
موجودیتهای نامدار مانند © خواناترند اما فقط برای مجموعهای محدود از نویسهها وجود دارند. ارجاعهای عددی مانند © (دهدهی) یا © (شانزدهدهی) برای هر نویسه یونیکد، از جمله ایموجی، کار میکنند.
چرا به چیزی تبدیل میشود که شبیه فاصله است؟
یک فاصله نشکن (U+00A0) است. شبیه فاصله عادی به نظر میرسد اما از شکستن خط جلوگیری میکند و HTML آن را ادغام نمیکند. این نویسه با فاصله معمولی تفاوت دارد و این موضوع هنگام مقایسه یا جستوجوی متن اهمیت دارد.
آیا باید حروف اکسنتدار مانند é را کدگذاری کنم؟
اگر صفحه شما از UTF-8 استفاده میکند (<meta charset="utf-8">) نیازی نیست؛ تقریباً همه صفحههای امروزی چنیناند. تنظیم پیشفرض را نگه دارید تا فقط همان پنج نویسه ویژه اسکیپ شوند.
آیا اسکیپ کردن برای جلوگیری از XSS کافی است؟
برای متن غیرقابلاعتماد که در محتوای عنصر HTML یا درون مقدار ویژگی داخل گیومه قرار میگیرد کافی است. برای کد JavaScript، CSS، ویژگیهای بدون گیومه یا URLهایی مانند href="javascript:…" کافی نیست و آنها به مدیریت متناسب با زمینه نیاز دارند.
حریم خصوصی
کدگذاری و کدگشایی با عملیات متنی ساده در مرورگر شما انجام میشوند؛ متن شما هرگز بهصورت HTML رندر نمیشود، بارگذاری نمیشود، ذخیره نمیشود و در تحلیلها قرار نمیگیرد.