أداة هروب / فك هروب HTML

يحوّل هروب HTML أحرفًا مثل < و> و& إلى كيانات HTML آمنة. ثم تعرضها المتصفحات كنص مرئي بدلًا من تفسيرها كوسوم. ويصادف المطورون مهام هروب HTML وفكه باستمرار: عند عرض التعليقات، أو تضمين مقاطع الشيفرة، أو فك HTML المسحوب من مصادر أخرى. وتجاوز هذه الخطوة، أو استخدام أداة غير مناسبة، قد يكسر تخطيط الصفحة أو يترك الوسوم بصيغة غير سليمة.

يعمل هذا المرمّز ومفكك الترميز المجاني لكيانات HTML بالكامل داخل متصفحك. لا توجد أي عملية رفع إلى خادم، ولا حاجة إلى تسجيل، ولا تغادر البيانات جهازك. يمكنك التبديل فورًا بين الهروب وفك الهروب، واختيار إخراج مسمّى أو رقمي، والحصول على نتائج نظيفة ومرتبة بشكل صحيح في كل مرة. سواء كنت تنقّي حقل تعليقات أو تفك استجابة API، فإن أداة هروب HTML هذه تصيب من المحاولة الأولى.

تعمل بالكامل داخل المتصفح
إخراج بكيانات مسمّاة ورقمية
تتضمن نسخ الإخراج وتبديل الإدخال والإخراج

أداة هروب / فك هروب HTML

حوّل النص الخام إلى كيانات HTML آمنة أو فك الكيانات لتعود إلى نص مقروء.

تنسيق الإخراج
كيانات مسمّاة
0 حرفًا
0 بايت
حوّل أحرف HTML الخمسة المحجوزة إلى كيانات آمنة.

ما هو هروب HTML (وفك الهروب)؟

هروب HTML يستبدل الأحرف ذات المعنى الخاص في HTML بكياناتها المقابلة. أهمها < و> و& و" و'. ومن دون هروب قد يكسر < أو & منفرد التخطيط أو يُفسَّر كوسم HTML.

أما فك هروب HTML فيعكس العملية ويحوّل الكيانات مرة أخرى إلى أحرفها الأصلية. فـ &lt; تعود إلى < و&amp; تعود إلى &. ويكون ذلك مفيدًا عند قراءة محتوى آتٍ من API أو RSS أو تصدير CMS.

أحيانًا يُكتب الأمر بصيغة HTML escape / unescape كعملية واحدة مجمعة. سواء سميته ترميز/فك ترميز الكيانات أو هروبًا وفك هروب، فهذه الأداة تغطي الاتجاهين.

كيف يعمل هروب HTML

يعمل هروب HTML حرفًا بحرف، وليس بايتًا ببايت كما في الترميزات الثنائية. كل حرف محجوز يتحول إلى كيان HTML محدد، مسمّى مثل &amp; أو رقمي مثل &#38;.

الكيانات المسمّاة أسهل قراءة. أما الرقمية فتعمل مع أي حرف حتى لو لم يكن له اسم معرف. كما أن الترتيب مهم: يجب تهريب & أولًا لتجنّب الترميز المزدوج.

إليك مثالًا حقيقيًا على السلسلة 5 < 10 & true. يتم استبدال كل حرف محجوز في مرور واحد من اليسار إلى اليمين، بينما يبقى بقية النص كما هو.

الحرف المحجوز الذي تم العثور عليه
الموضع داخل السلسلة
كيان HTML
<بعد `5 `&lt;
&بعد `10 `&amp;

النتيجة:5 < 10 & true5 &lt; 10 &amp; true

كيفية استخدام أداة هروب / فك هروب HTML

هل تحتاج إلى هروب HTML أونلاين بدون تثبيت أي شيء؟ سير العمل هنا بسيط: اختر الوضع، الصق الإدخال، حدد تنسيق الإخراج للهروب، ثم انسخ النتيجة. كل شيء يتم محليًا داخل المتصفح.

الناتج المُهرَّب يحافظ على نصك الأصلي ويضيف فقط الكيانات الآمنة اللازمة. وللعودة إلى النص العادي، الصق النص واضغط فك الهروب ثم انسخ الناتج. وإذا لم يتغير شيء، فغالبًا لم تكن هناك أحرف تحتاج إلى هروب.

  • اختر هروب لترميز النص الخام، أو فك الهروب لإرجاع كيانات HTML إلى نص.
  • الصق النص أو مقطع HTML في مربع الإدخال.
  • في وضع الهروب، اختر كيانات مسمّاة مثل &amp; أو كيانات رقمية مثل &#38;.
  • انقر هروب HTML أو فك هروب HTML لتظهر النتيجة فورًا.
  • استخدم نسخ الإخراج لأخذ النتيجة أو تبديل الإدخال/الإخراج لعكس العملية.

أمثلة عملية

كلمة واحدة لا تكفي لتوضيح كيف يعمل هروب HTML وفكّه مع محتوى حقيقي. يمرّ الجدول التالي على خمسة سيناريوهات شائعة، من جملة بسيطة إلى مقطع HTML كامل.

لاحظ أن مثال المقارنة يهرب < و& في المرور نفسه وبالترتيب الصحيح. فتهريب & أولًا يمنع &lt; و&gt; من التحول خطأً إلى &amp;lt; و&amp;gt;.

السيناريو
الإدخال
الإخراج
جملة عادية تحتوي على علامة &`Tom & Jerry``Tom &amp; Jerry`
مقطع HTML`<div class="card">Hi</div>``&lt;div class=&quot;card&quot;&gt;Hi&lt;/div&gt;`
قيمة سمة تحتوي على فاصلة عليا`Jenny's "Big" Sale``Jenny&#39;s &quot;Big&quot; Sale`
نص مقارنة`5 < 10 && 10 > 5``5 &lt; 10 &amp;&amp; 10 &gt; 5`
مثال على فك الهروب`Tom &amp; Jerry&#39;s &quot;Big&quot; Sale``Tom & Jerry's "Big" Sale`

مرجع كيانات HTML الشائعة

في أغلب سياقات HTML لا تحتاج إلا إلى هروب خمسة أحرف، لكن من المفيد معرفة بعض الإضافات. يعرض الجدول التالي المجموعة الشائعة وبعض الرموز الطباعية الإضافية.

الكيانات المسمّاة مثل &copy; أسهل قراءة في الشيفرة المصدرية. أما الكيانات الرقمية مثل &#169; فتعمل حتى عندما لا يملك الحرف اسمًا معرفًا.

هناك أيضًا الصيغة السداسية عشرية: &#x26; تمثل نفس علامة & التي تمثلها &#38;. خيار الكيانات الرقمية في هذه الأداة ينتج الصيغة العشرية افتراضيًا، لكن فك الهروب يدعم المراجع السداسية أيضًا.

إلى جانب الأحرف الخمسة المحجوزة، يعرّف HTML كيانات مسمّاة لحروف ورموز أخرى مثل &eacute; و&ntilde;. يفيد ذلك عندما لا يمكنك ضمان UTF-8 في الطرف الآخر.

كما يصف المستخدمون هذه الأحرف بطرق مختلفة مثل هروب اقتباسات HTML أو فاصلة HTML العليا أو علامة & أو أصغر من أو أكبر من. القواعد نفسها لا تتغير.

الحرف
الاسم
كيان مسمّى
كيان رقمي
ملاحظة
&علامة العطف&amp;&#38;يجب هروبها أولًا دائمًا لتجنّب الترميز المزدوج لاحقًا.
<علامة أصغر من&lt;&#60;تمنع المتصفح من تفسيرها كبداية وسم.
>علامة أكبر من&gt;&#62;غالبًا ما تُهَرَّب للمحافظة على التناسق، رغم أنها ليست مطلوبة دائمًا.
"علامة اقتباس مزدوجة&quot;&#34;مطلوبة داخل قيمة سمة HTML المحاطة باقتباسين مزدوجين.
'فاصلة عليا&#39;&#39;&apos; صالح في HTML5 لكن &#39; يعمل في كل مكان.
 مسافة غير قابلة للكسر&nbsp;&#160;تظهر كثيرًا في المحتوى الملصوق من محررات غنية.
©رمز حقوق النشر&copy;&#169;هذا رمز طباعي وليس حرفًا محجوزًا.
-شرطة طويلة&mdash;&#8212;غالبًا ما تتلف عند النسخ من معالجات النصوص.

أين لا ينطبق هروب HTML

لا يعمل هروب HTML إلا حيث يكون المتصفح بصدد تحليل محتوى نصي من HTML. وهناك موضعان شائعان يكسران هذه الفرضية: عناصر <script>/<style>، وسمات HTML التي تحتوي فعليًا على JavaScript أو CSS.

داخل وسوم <script> و<style> لا يحلل المتصفح الكيانات أصلًا, بل يتعامل مع المحتوى على أنه JavaScript أو CSS خام. لذلك فإن هروب & داخل كتلة <script> لا يحمي شيئًا، بل يطبع &amp; حرفيًا داخل الشيفرة، وهذا يكون خاطئًا عادةً. القيم الديناميكية تحتاج إلى هروب صحيح لسلاسل JS أو CSS، لا إلى كيانات HTML.

وينطبق الأمر نفسه على سمات مثل onclick وstyle. فالعنصران <p onclick="NOT-HERE"> و<p style="NOT-HERE"> يحتويان على JavaScript وCSS على التوالي. وهروب HTML وحده لا يجعل المحتوى غير الموثوق آمنًا داخلهما. لذا طابق نوع الهروب مع السياق الحقيقي، لا لمجرد أنه "داخل وسم HTML".

هروب HTML داخل الشيفرة: JavaScript وPython وPHP

كثير من المطورين لا يحتاجون فقط إلى تحويل لمرة واحدة، بل يحتاجون المنطق نفسه داخل التطبيق. الأمثلة التالية تغطي ثلاث لغات شائعة لهروب HTML وفكّه.

في JavaScript لا توجد دالة مدمجة واحدة مخصصة لهروب HTML، لذلك تبقى طريقة textContent هي الخيار الأكثر أمانًا في المتصفح. وعلى الخادم، استخدم مكتبة متخصصة في هروب HTML.

أما Python وPHP فالأمر فيهما أبسط، لأن كلتيهما توفران دالة مخصصة ضمن الأدوات القياسية. لا حاجة لتثبيت شيء إضافي.

JavaScript (المتصفح)

// Escape (safe display)
const el = document.createElement("div");
el.textContent = "Tom & Jerry";
const escaped = el.innerHTML;
console.log(escaped); // Tom &amp; Jerry

// Unescape
const parser = new DOMParser();
const decoded = parser.parseFromString(escaped, "text/html").body.textContent;
console.log(decoded); // Tom & Jerry

Python

import html

escaped = html.escape("Tom & Jerry")
print(escaped)  # Tom &amp; Jerry

decoded = html.unescape(escaped)
print(decoded)  # Tom & Jerry

PHP

<?php
$escaped = htmlspecialchars("Tom & Jerry");
echo $escaped; // Tom &amp; Jerry

$decoded = htmlspecialchars_decode($escaped);
echo $decoded; // Tom & Jerry

هل يمنع هروب HTML هجمات XSS؟ (الأمان والخصوصية)

هروب HTML يقلل من خطر XSS، لكنه ليس حماية كاملة بحد ذاته. فالهروب يجعل نص المستخدم يُعرض كأحرف مرئية بدلًا من وسم HTML, وهذا مفيد فعلًا وضروري. أما الحماية الكاملة فتحتاج إلى هروب واعٍ بالسياق: فجسم HTML والسمات وJavaScript وعناوين URL لكل منها قواعده الخاصة.

من ناحية الخصوصية، تعمل هذه الأداة بالكامل من جهة العميل داخل متصفحك. النص وHTML اللذان تلصقهما لا يُرفعان أبدًا إلى أي خادم. أما السلاسل الحساسة, مثل مسودات التعليقات والقوالب الداخلية واستجابات API التي تقوم بتصحيحها, فتبقى على جهازك طوال الوقت.

تعامل مع هذه الأداة على أنها وسيلة صحيحة لهروب كيانات HTML أو فكها من أجل العرض، وليست وسيلة حماية مستقلة بحد ذاتها. نظّف أي HTML تسمح به عمدًا, مثل النص الغني أو مخرجات Markdown, باستخدام مكتبة تعقيم مخصصة. وتحقق من المدخلات غير الموثوقة أيضًا على جهة الخادم، لا عند العرض فقط. أما في سياق URL، فإن أداة ترميز/فك ترميز URL يتعامل مع percent-encoding لسلاسل الاستعلام والمسارات.

أخطاء شائعة في هروب HTML وكيفية إصلاحها

معظم أخطاء هروب HTML وفكّه تعود إلى عدة أنماط متكررة. التعرّف عليها يوفر كثيرًا من الوقت.

إذا بدا النص وكأنه ما زال مُهرَّبًا مرتين بعد تشغيل فك الهروب مرة واحدة، فجرّب تشغيله مرة ثانية. هذا يعني غالبًا أن الترميز حدث مرتين في مرحلة سابقة.

الخطأ
السبب
الإصلاح
يظهر النص `&amp;lt;` بدل `<`تم تهريب الإدخال مرتين: مرة في الكود ومرة أخرى بواسطة auto-escaping في القالب.افك الهروب مرة واحدة لإزالة طبقة، ثم تحقق هل ما زال النص مرمّزًا.
علامات الاقتباس تكسر سمة HTMLلم يتم تهريب " أو ' داخل قيمة السمة إلى `&quot;` أو `&#39;`.اهرب علامات الاقتباس قبل إدخال النص في أي سمة.
تظهر & حرفيًا بدل `&amp;`لم يتم تهريب & أولًا، فتصادمت مع كيانات أُنشئت لاحقًا.اهرب دائمًا & قبل < و> و" و'.
فك الهروب لا يغيّر الكياناتالإدخال يخلط بين الكيانات المسمّاة والرقمية، أو يستخدم مراجع سداسية مثل `&#x26;`.استخدم مفكك ترميز يفهم الكيانات المسمّاة والعشرية والسداسية عشرية.

هروب HTML مقارنة بالترميزات الأخرى

هروب HTML ليس الطريقة الوحيدة لجعل النص آمنًا. الاختيار الصحيح يعتمد على وجهة الإخراج. يوضح الجدول التالي الفرق بين هروب HTML وبين الترميزات التي يخلط الناس بينها غالبًا.

استخدام الترميز الخاطئ يترك المشكلة الأساسية قائمة. أحرف هروب HTML لن تحمي عنوان URL، كما أن percent-encoding لن يحمي نص جسم HTML أيضًا. بالنسبة إلى سلاسل الاستعلام، يتعامل أداة ترميز/فك ترميز URL مع percent-encoding بالشكل الصحيح. وبالنسبة إلى البيانات الثنائية مثل الملفات والصور، يغطي أداة ترميز/فك ترميز Base64 ترميز Base64 وفك ترميزه. أما السلاسل الحرفية داخل JavaScript، فإن أداة هروب سلاسل JavaScript تطبق تسلسلات الهروب الصحيحة.

الترميز
الأحرف المحجوزة
أفضل استخدام
هروب HTML<, >, &, ", 'النص داخل جسم HTML وقيم السمات
ترميز URLأحرف URL المحجوزة (تسلسلات %XX)سلاسل الاستعلام والمسارات وبيانات النماذج
هروب سلاسل JavaScript\n, \", \\, unicode escapesالنص داخل سلسلة JavaScript حرفية
ترميز Base64بيانات ثنائية كاملة إلى أبجدية من 64 حرفًاالبيانات الثنائية داخل الأنظمة النصية فقط

الأسئلة الشائعة

أسئلة مكررة