انکد و دیکد HTML Entities

تبدیل ایمن کاراکترهای ویژه به کدهای استاندارد وب. ابزار ضروری برای جلوگیری از حملات XSS و نمایش صحیح سورس کد.

HTML Entities چیست؟ (مبانی امنیت وب)

در زبان HTML، برخی کاراکترها مانند < (کوچکتر)، > (بزرگتر)،" (گیومه) و & (امپرسند) نقش ساختاری دارند. اگر بخواهید این کاراکترها را دقیقاً به همین شکل در متن صفحه نمایش دهید، مرورگر گیج شده و سعی می‌کند آن‌ها را به عنوان کد تفسیر کند. برای حل این مشکل، از HTML Entities استفاده می‌کنیم که کدهای جایگزین استانداردی هستند که به مرورگر می‌گویند: "لطفاً این علامت را فقط نمایش بده و اجرا نکن."

جدول کاراکترهای حیاتی (Reserved Characters)

<
<Less Than
>
>Greater Than
&
&Ampersand
"
"Double Quote
'
'Single Quote

* نکته: برای آپاستروف (') بهتر است از کد عددی &#39; استفاده کنید، زیرا &apos; در HTML4 استاندارد نبود و ممکن است در مرورگرهای بسیار قدیمی (IE) درست کار نکند.

اهمیت در امنیت (XSS Protection)

یکی از خطرناک‌ترین حملات وب، Cross-Site Scripting (XSS) است. فرض کنید در بخش نظرات سایت، کاربری کد زیر را بنویسد:

<script>alert('Hacked!');</script>

اگر سایت شما ورودی را Encode نکند، این کد در مرورگر همه بازدیدکنندگان اجرا می‌شود! با استفاده از این ابزار و تبدیل آن به:

&lt;script&gt;alert('Hacked!');&lt;/script&gt;

کد مخرب خنثی شده و فقط به صورت متن بی‌خطر نمایش داده می‌شود.

سوالات متداول

آیا باید حروف فارسی را هم Encode کنم؟
خیر. اگر صفحه شما از انکدینگ UTF-8 استفاده می‌کند (که استاندارد مدرن است)، نیازی به تبدیل حروف فارسی نیست. HTML Entities فقط برای کاراکترهای رزرو شده (Syntax) ضروری است.
انکد مضاعف (Double Encoding) چیست؟
اشتباهی است که در آن یک متن دو بار انکد می‌شود. مثلاً & تبدیل به &amp; می‌شود و اگر دوباره انکد شود به &amp;amp; تبدیل می‌گردد که باعث نمایش کدهای زشت در صفحه می‌شود.