مشفِّر ومفكِّك كيانات HTML
الصق نصًا لتشفير الأحرف الخاصة كيانات HTML، أو الصق HTML يحتوي على كيانات لفكّها إلى نص مقروء. اختر بين الكيانات المسمّاة (&، <، ©) أو العددية العشرية (©) أو السداسية عشرية (©). يمكنك أيضًا تشفير جميع الأحرف غير ASCII لتحقيق أقصى قدر من التوافق.
كيف تعمل
ما هي كيانات HTML؟
كيانات HTML هي رموز نصية خاصة تُستخدم لتمثيل الأحرف التي لها معنى خاص في HTML أو التي لا يمكن كتابتها مباشرةً. الأهم من بينها الأحرف الخمسة المحجوزة في بناء HTML: & (علامة العطف) ← &، < (أصغر من) ← <، > (أكبر من) ← >، " (علامة اقتباس مزدوجة) ← "، و' (فاصلة عليا) ← '. إذا ظهرت هذه الأحرف في محتوى النص دون تشفير، قد يفسّرها المتصفح على أنها ترميز HTML مما يُسبب أخطاء في العرض أو ثغرات أمنية.
تأتي كيانات HTML في ثلاثة أشكال: تستخدم الكيانات المسمّاة اسمًا وصفيًا (© لـ ©، و€ لـ €)، وتستخدم مراجع الأحرف العددية العشرية رقم نقطة الترميز (© لـ ©)، وتستخدم مراجع الأحرف السداسية عشرية رمزًا سداسيًا (© لـ ©). الأشكال الثلاثة متكافئة — يعرض المتصفح الحرف ذاته بصرف النظر عن الشكل المستخدم. الكيانات المسمّاة هي الأكثر قابلية للقراءة؛ والكيانات العددية هي الأكثر عالمية لأنها تعمل مع أي حرف Unicode.
متى يجب تشفير كيانات HTML
يجب تشفير الأحرف الخمسة المحجوزة في HTML (&، <، >، "، ') على أقل تقدير في كل مرة تظهر فيها في محتوى النص أو قيم السمات. إهمال تشفيرها يُعدّ مصدرًا لثغرات البرمجة النصية عبر المواقع (XSS): إذا أُدرج مدخل المستخدم في HTML دون تشفير، يمكن للمهاجم حقن وسوم script أو معالجات الأحداث. تُشفِّر الأطر الحديثة مثل React وVue وAngular HTML تلقائيًا بشكل افتراضي — ويُعدّ innerHTML الاستثناء الرئيسي الذي لا يزال يستوجب التشفير اليدوي.
بالإضافة إلى الأحرف الخمسة المطلوبة، قد تحتاج أيضًا إلى تشفير أحرف غير ASCII للبيئات التي لا تعالج UTF-8 بشكل موثوق: HTML في البريد الإلكتروني، وأنظمة CMS القديمة، أو المستندات المُعدَّة لتحقيق أقصى قدر من التوافق. يحوِّل خيار «تشفير جميع أحرف غير ASCII» كل حرف يتجاوز نقطة الترميز 127 إلى كيان عددي، مما يضمن أن يكون المخرج ASCII نقيًا مع الحفاظ على مظهره المرئي عند العرض. أما في ملفات HTML الحديثة المشفَّرة بـ UTF-8، فإن تشفير أحرف غير ASCII اختياري — يكفي تصريح charset بشكل صحيح.
كيانات HTML مقابل ترميز URL مقابل Base64
تُعدّ كيانات HTML وترميز URL (الترميز بالنسبة المئوية) وBase64 ثلاثة مخططات ترميز مختلفة تخدم سياقات مختلفة. تُستخدم كيانات HTML (مثل &) داخل مستندات HTML لتمثيل الأحرف بشكل آمن. يُستخدم ترميز URL (مثل %26 لـ &) في سلاسل الاستعلام وعناوين URL لترميز الأحرف ذات الدلالة الخاصة في عنوان URL. أما Base64 فيُشفِّر بيانات ثنائية عشوائية كنص ASCII ويُستخدم في URIs للبيانات ومرفقات البريد الإلكتروني.
الخطأ الشائع هو الخلط بين هذه الأساليب: استخدام ترميز URL لمحتوى HTML أو ترميز HTML لعناوين URL. على سبيل المثال، تحتاج علامة العطف في سلسلة استعلام URL إلى ترميز نسبة مئوية (%26)، لا ترميز كيان HTML (&). إذا أنشأت عنوان URL يُضمَّن في سمة HTML، فستحتاج إلى كليهما: يدخل الشكل المُرمَّز بـ URL في السمة، ويُرمَّز قيمة السمة ذاتها بـ HTML. فهم أيّ ترميز ينطبق في أيّ سياق يمنع أخطاء الترميز المزدوج والمشكلات الأمنية.
أسئلة شائعة
›ما هو كيان HTML لعلامة العطف (&)؟
كيان HTML لعلامة العطف هو & — وهو حرفيًا الأحرف &، وa، وm، وp، ثم الفاصلة المنقوطة. حين تكتب & في مصدر HTML، يعرض المتصفح حرف & واحدًا فقط. هذا الترميز ضروري في كل مرة تظهر فيها علامة العطف في محتوى النص أو قيم السمات، لأن & غير المُشفَّرة تبدأ تسلسل كيان يحاول المُحلِّل تفسيره.
›ما هو كيان HTML لرمز حقوق الطبع والنشر (©)؟
رمز حقوق الطبع والنشر © له ثلاثة كيانات HTML متكافئة: المسمّاة ©، والعددية العشرية ©، والسداسية عشرية ©. تُعرض كلها بالحرف ذاته ©. الكيانات المسمّاة هي الأكثر قابلية للقراءة حين تكون متاحة. في HTML الحديث بترميز UTF-8، يمكنك أيضًا كتابة الحرف © مباشرةً دون الحاجة إلى كيان، طالما يُصرِّح ملف HTML الخاص بك بـ charset=utf-8.
›هل أحتاج إلى تشفير علامات الاقتباس في HTML؟
يجب تشفير علامات الاقتباس المزدوجة (") كـ " داخل سمات HTML المحاطة بعلامات اقتباس مزدوجة: <input value=""">. يجب تشفير علامات الاقتباس الفردية (') كـ ' أو ' داخل السمات ذات الاقتباس الفردي. داخل محتوى نص العناصر (بين الوسوم)، يمكن لكلا نوعي الاقتباس الظهور دون تشفير، لكن تشفيرهما لا يضر. تشفيرهما معًا بشكل متسق في جميع السياقات هو النهج الأكثر أمانًا.
›ما الفرق بين الكيانات المسمّاة والعددية؟
تستخدم الكيانات المسمّاة كلمة وصفية (©، €، ♥) وهي مُعرَّفة في مواصفة HTML — ليس لكل حرف Unicode كيان مسمّى. تستخدم الكيانات العددية نقطة ترميز Unicode، إما بالتمثيل العشري (€ لـ €) أو السداسي عشري (€ لـ €). تعمل الكيانات العددية مع أي حرف Unicode، بينما تغطي المسمّاة مجموعة فرعية فقط. كلا النوعين يُعرضان بشكل متطابق في المتصفحات.
›هل يجب تشفير أحرف غير ASCII في HTML؟
في العادة لا. إذا صرَّح مستند HTML الخاص بك بترميز UTF-8 (meta charset=utf-8) وحُفظ بتنسيق UTF-8، يمكنك كتابة أحرف غير ASCII مباشرةً: é، ñ، 中، 🎉. تشفيرها كيانات اختياري ويجعل المصدر أصعب في القراءة. الاستثناء يكون عند إرسال HTML في سياقات قد لا تحافظ على الترميز: رسائل البريد الإلكتروني، أو واجهات API القديمة، أو الأنظمة التي تُفسد بايتات غير ASCII. في تلك الحالات، يضمن تشفير كل أحرف غير ASCII ككيانات عددية أن يكون المخرج ASCII نقيًا وآمنًا.
›ما هو XSS وكيف تمنعه كيانات HTML؟
البرمجة النصية عبر المواقع (XSS) ثغرة أمنية يحقن فيها المهاجم JavaScript خبيثًا في صفحة ويب عن طريق إدراج نص يعكسه الخادم في HTML دون تشفير. فمثلًا، إذا أُدرج مدخل المستخدم <script>alert('xss')</script> مباشرةً في صفحة، نفَّذ المتصفح البرنامج النصي. أما إذا شفَّرت المدخل بشكل صحيح — بتحويل < إلى < و> إلى > — فيعرض المتصفح النص حرفيًا بدلًا من تحليله كوسم. يُعدّ تشفير كيانات HTML الدفاع الأساسي ضد XSS المنعكس والمخزَّن.
›لماذا لا يظهر في قائمة هذه الأداة؟
تُشفِّر هذه الأداة الأحرف التي لها كيانات مسمّاة. يُشفَّر المسافة غير الفاصلة (Unicode U+00A0) كـ حين تكتب حرف المسافة غير الفاصلة الفعلي (الذي يمكن إدراجه بـ Alt+Space في بعض الأنظمة أو نسخه من خرائط الأحرف). أما المسافة العادية (U+0020، مسافة لوحة المفاتيح) فلا تُشفَّر لأنها حرف ASCII آمن. إذا احتجت تحديدًا إلى في المخرج، اكتب أو الصق حرف مسافة غير فاصلة في المدخل.
›هل يمكنني استخدام هذه الأداة لمنع حقن HTML في مدخلات المستخدم؟
نعم — تشفير النص الذي يُدخله المستخدم قبل إدراجه في HTML يُعدّ أحد الدفاعات الأساسية ضد حقن HTML وXSS. قم على أقل تقدير بتشفير الأحرف الخمسة المحجوزة: &، <، >، "، '. تُشفِّر هذه الأداة الأحرف الخمسة جميعها. غير أن التشفير وحده ليس حلًا أمنيًا متكاملًا: ستحتاج أيضًا إلى رؤوس Content Security Policy المناسبة، والتعامل الحذر مع روابط javascript: في السمات، وأدوات الحماية على مستوى الإطار. في تطبيقات الإنتاج، استخدم مكتبة جانب الخادم المصمَّمة للأمان (مثل OWASP Java Encoder، وDOMPurify للجانب العميل) بدلًا من التشفير اليدوي.
أدوات ذات صلة
آخر تحديث: