Command Palette

Search for a command to run...

وحدة فك ترميز تشفير كيان HTML: Escape وUnescape وStop Shipping &amp؛amp؛ للإنتاج

وحدة فك ترميز تشفير كيان HTML: Escape وUnescape وStop Shipping &amp؛amp؛ للإنتاج

T
Toolz Team
|Jul 11, 2026|25 دقيقة قراءة

جزء من مجموعة ترقيم

في عام 2021 تقريبًا، وصلت تذكرة دعم WP Adminify مع لقطة شاشة لا تزال تجعلني أشعر بالجفل. قام أحد المستخدمين بتعيين نص تذييل مسؤول مخصص - وهو سطر حقوق الطبع والنشر بريء تمامًا مع ملف © ورابط لوكالتهم. على شاشتهم تم تقديمه كـ © 2021 — Bright & Co. ثلاثة كيانات مرئية، بدون أحرف معروضة. كان الجاني أنا. لقد أفلت روتين الحفظ الخاص بي من النص، وأفلت روتين العرض الخاص بي منه مرة أخرى، وفي مكان ما بينهما أفلت منه عامل التصفية للمرة الثالثة. بحلول الوقت الذي وصلت فيه إلى المتصفح، كانت علامة العطف الضعيفة قد أفلتت أربع مرات. أحصيت.

استغرق الإصلاح عشر دقائق. استغرق العثور عليه أمسيتين، لأن النص الذي تم الهروب منه يبدو تقريبًا يمين. أنت تقشر © في تفريغ قاعدة البيانات ويقوم دماغك بتصحيحها تلقائيًا ©. انتهى بي الأمر بلصق السلاسل في ملف HTML مرارًا وتكرارًا فقط لمعرفة ما سيعرضه المتصفح فعليًا في كل طبقة. That&#39؛s سير عمل بائس، وit&#39؛s بالضبط لماذا يعد برنامج فك ترميز كيان HTML واحدًا من الأدوات الأولى التي قمت بدمجها في Toolz.dev.

الوجه الآخر لنفس العملة أكثر رعبًا. قبل بضعة أشهر من تلك التذكرة، أثناء مراجعة التعليمات البرمجية للمكون الإضافي الخاص بي، وجدت حقل إعدادات يردد صدى إدخال المستخدم في إشعار المسؤول بدون esc_html(). يمكن لأي شخص لديه حق الوصول إلى هذا الحقل أن يقوم بالتخزين <script> وتم تنفيذه لكل مسؤول قام بتحميل الصفحة. قمت بتخزين XSS، في الكود الخاص بي، باستدعاء وظيفة مفقودة. لم يستغلها أحد - لقد حالفني الحظ. لكنها غيرت بشكل دائم طريقة تفكيري في الهروب: it&#39؛s ليس عملاً روتينيًا للتنسيق، &#39؛s الحدود بين &quot؛text&quot؛ و&quot؛code.&quot؛

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

ليرة تركية؛DR: لصق النص الخاص بك في Toolz.dev تشفير/فك تشفير كيانات HTML للتحويل بين الأحرف والكيانات الأولية في أي من الاتجاهين - المسمى أو العشري أو السداسي. يعمل بنسبة 100% من جانب العميل، لذلك لا يغادر محتوى المستخدم ورقم التعريف الشخصي متصفحك أبدًا. القاعدة الأساسية: اهرب دائمًا من العروض الخمسة الخاصة (& < > " ') في الإدخال غير الموثوق به، والتشفير & أولاً أو أنت &#39؛الهروب المزدوج.

الميزات الرئيسية

التشفير وفك التشفير في كلا الاتجاهين

نصف الوقت الذي أحتاجه للتحول <script> في &lt;script&gt; لذلك يتم عرضه كنص في منشور مدونة. النصف الآخر I&#39؛ أنا أسير في الاتجاه المعاكس - تحول إلى كشط &amp;#8217;s العودة إلى الفاصلة العليا المقروءة. الأداة تتعامل مع كليهما. لصق النص، اختيار التشفير أو فك التشفير، تم. لا يوجد بحث عن الوضع، ولا توجد أدوات منفصلة لكل اتجاه. يبدو ذلك تافهًا حتى تستخدم &#39؛ لقد استخدمت أدوات تقوم بفك التشفير فقط، وتجد نفسك تفتح علامة تبويب ثانية لتشفير عينة من التعليمات البرمجية لمستنداتك. يعد التعثر الدائري أيضًا فحصًا رائعًا للسلامة: قم بتشفير وفك تشفير وتأكيد استعادة السلسلة الأصلية. إذا كنت تفعل ذلك &#39؛t، فقد تم بالفعل الهروب جزئيًا من شيء ما في مدخلاتك - وهي في حد ذاتها معلومات مفيدة.

الكيانات المسماة: &amp؛amp؛، &amp؛lt؛، &amp؛نسخ؛ والأصدقاء

مراجع الأحرف المسماة هي تلك التي يمكن قراءتها بواسطة الإنسان - &amp; ل &amp؛، &lt; ل &lt؛، &copy; ل ©، &mdash; لشرطة إم. تحمل الأداة جدولًا منسقًا يضم 147 اسمًا، وليس فقط الأسماء الخمسة الشهيرة: الطباعة (&nbsp;، &hellip;، &rsquo;، &ldquo;)، والعملة، والرياضيات، والأسهم، والأحرف اليونانية، والنطاق الكامل المميز بـ Latin-1، وبعض الاحتمالات مثل بدلات البطاقات. هذا النطاق هو ما يحتاجه محتوى العالم الحقيقي فعليًا - ينبعث منه WordPress &nbsp;، &hellip;، و &rsquo; من خلال wptexturize باستمرار، ووحدة فك التشفير التي تعرف عشرات الأسماء فقط تترك نصف النص الخاص بك مليئًا بالمراجع التي لم يتم حلها.

كن واضحًا بشأن ما ليس 147: WHATWG يحدد معيار HTML أكثر من 2200 مرجع مسمى، لذا فهذه مجموعة فرعية عملية وليست جدولًا كاملاً. إذا كان الاسم &#39؛t فيه، فإن فك التشفير يترك المرجع دون تغيير بدلاً من التخمين - &bogus; يخرج كما &bogus;. التشفير له السلوك التكميلي، وهو &#39؛s النصف الأكثر فائدة: أي حرف بدون يعود الاسم الموجود في الجدول إلى مرجع رقمي عشري تلقائيًا، لذلك لا يتم إسقاط أي شيء بصمت. يتم ترميز الرموز التعبيرية كـ &#127757;، النص الصيني كما &#20320;&#22909;. الأسماء حيثما وجدت، والأرقام في كل مكان آخر.

هناك اختلاف آخر عن سلوك المتصفح يستحق المعرفة: وحدة فك التشفير حساسة لحالة الأحرف وتتطلب الفاصلة المنقوطة. سوف تحل المتصفحات &COPY; وحتى عارية &amp بدون فاصلة منقوطة زائدة في بعض سياقات التحليل، وذلك بفضل قواعد التوافق القديمة؛ وحدة فك التشفير هذه لا تحل أيًا منهما. من الناحية العملية، لا بأس بـ &#39؛ - أي شيء أداة حديثة يولد هو حرف صغير وينتهي - ولكن إذا كنت &#39؛ فإعادة فك تشفير HTML المستخرج من نظام إدارة المحتوى القديم، فهذا &#39؛s الحافة التي ستضربها &#39؛ll.

المراجع الرقمية: العشرية والسداسية العشرية

أي يونيكود يمكن كتابة الحرف كمرجع رقمي للأحرف - مثل العلامة العشرية &#8212; أو مثل عرافة &#x2014; (كلاهما عبارة عن شرطة em). يقوم جهاز فك التشفير بحل كلا النموذجين. هذه هي فتحة الهروب للأحرف التي ليس لها اسم في المعيار، وهي &#39؛s النموذج ou&#39؛ سوف تجتمع باستمرار في استجابات API وخلاصات RSS، حيث &#8217; (الاقتباس الفردي الأيمن) هو عمليا توقيع. خريطة المراجع السداسية مباشرة إلى نقاط كود Unicode - U+2014 هي &#x2014;- ولهذا السبب أفضّلها عندما يكون I&#39؛m مرجعيًا مقابل مخطط Unicode.

تقييد صادق، منذ أن لاحظت &#39؛ ستلاحظ ذلك خلال دقيقة واحدة من استخدام الأداة: الرقمية تشفير الوضع ينبعث من النظام العشري فقط. هناك &#39؛s لا يوجد خيار الإخراج السداسي. فك التشفير &#x2014; يعمل بشكل جيد؛ مطالبة المشفر بإنتاجه لا &#39؛t. النموذجان متطابقان لغويًا مع كل متصفح، لذلك لا يكلفك هذا شيئًا وظيفيًا، ولكن إذا تم توحيد قاعدة التعليمات البرمجية الخاصة بك على hex you&#39؛ فسيتم التحويل يدويًا. It&#39؛s في قائمتي. يتم القبض على المراجع خارج النطاق بدلاً من تشويهها - &#1114112; أعلى من الحد الأقصى لـ Unicode ويقوم بإرجاع خطأ صريح بدلاً من الحرف البديل.

تغطية يونيكود كاملة

الرموز التعبيرية، وأحرف CJK، واللغة العربية، والجمع بين علامات التشكيل، والأعمال. إذا كانت تحتوي على نقطة رمز، فيمكن للأداة التعبير عنها ككيان وحلها مرة أخرى. هذا يهم أكثر منك &#39؛ أفكر في أعمال الترجمة - I&#39؛ لقد قمت بتصحيح أخطاء علامات تغير الصوت الألمانية التي تصل كـ &#252; من بائع ترجمة واحد وباعتباره UTF-8 خام ü من آخر، في نفس ملف الاستيراد. الأداة التي تختنق خارج Latin-1 لا فائدة منها لذلك. يتم التعامل مع الأحرف الموجودة أعلى U+FFFF (الرموز التعبيرية الموجودة هناك) بشكل صحيح كنقاط رمز مفردة، وليس كأزواج بديلة مشوهة.

فك تشابك النص ذو المشهد المزدوج

ال &amp;amp; مشكلة. عندما تهرب طبقتان من خط الأنابيب، & يصبح &amp;amp;- وثلاث طبقات تعطيك &amp;amp;amp;. يؤدي فك التشفير إلى تقشير طبقة واحدة بالضبط، حتى تتمكن من تشغيل وحدة فك التشفير بشكل متكرر ومشاهدة البصل وهو يفك غلافه &amp;amp;amp;&amp;amp;&amp;&. يخبرك حساب التمريرات بعدد طبقات المكدس التي تهرب، وهو بالضبط التشخيص الذي احتاجه خلال خطأ التذييل WP Adminify الذي تم الهروب منه أربع مرات. فك تشفير واحد لكل طبقة. It&#39؛s هي أسرع طريقة أعرفها لتحديد مكان حدوث الهروب الإضافي في خط الأنابيب.

أجزاء جنبًا إلى جنب مع أعداد الأحرف

الإدخال على اليسار، والإخراج على اليمين، يتم احتساب الأحرف فوق كليهما. يقوم زوج العد هذا بعمل أكثر مما يبدو: الهروب هو عملية موسعة، لذلك إذا قمت بتشفير 40 حرفًا واستعادت 44 حرفًا، فسيتم لمس حرف خاص واحد بالضبط. عندما أقوم بـ I&#39؛ بتدقيق ما إذا كان القالب قد أفلت بالفعل من شيء ما، تخبرني الدلتا قبل I&#39؛ نقرأ حرفًا واحدًا من الإخراج. التشفير وفك التشفير والمبادلة والمسح هي أزرار - هناك &#39؛ لا يوجد تحويل مباشر كما تكتب، وهو ما أنا &#39؛ سأعترف بأنه مقايضة متعمدة أندم عليها أحيانًا. الإجراءات الصريحة تعني أنك تعرف دائمًا الاتجاه الذي أنتج النص أنت &#39؛ تنظر، ومع الهروب من الأخطاء، فإن هذا الغموض هو المشكلة برمتها. ولكن بالنسبة للوخز الاستكشافي، فإن الإصدار الذي يعتمد على ضغط المفاتيح سيكون أجمل حقًا.

100% من جانب العميل - لم يتم تحميل أي شيء

كل شيء يعمل في متصفحك. لا يوجد طلب، لا خادم، لا سجلات. هذا &#39؛ من الجيد أن تمتلكه: النص الذي يجب عليك &#39؛ الهروب غالبًا ما يكون بالضبط النص الذي يجب عليك &#39؛ لصقه في مواقع الويب العشوائية - التعليقات التي أنشأها المستخدم بأسماء حقيقية، وقوالب البريد الإلكتروني مع عناوين العملاء، ومحتوى تذكرة الدعم. أنا &#39؛ لقد كتبت من قبل عن سبب أهمية هذا الأمر دليل خصوصية البيانات لدينا؛ الإصدار القصير هو أن المحول الذي يقوم بتحميل مدخلاتك هو معالج بيانات لم تقم بفحصه مطلقًا. ال أداة كيان Toolz.dev يعمل دون اتصال بمجرد تحميله. وضع الطائرة هو اختبار صالح - جربه.

كيفية استخدام برنامج تشفير وفك تشفير كيان HTML

الخطوة 1: افتح الأداة والصق النص الخاص بك

اذهب الى Toolz.dev/tools/html-entities ولصق مدخلاتك - مقتطف من التعليمات البرمجية، ومقتطف RSS مشوه، وجزء من قالب البريد الإلكتروني، أيًا كان. هناك &#39؛ لا يوجد سقف حجم يستحق القلق بشأنه للاستخدام العادي؛ I&#39؛ لقد قمت بلصق سجلات تغيير المكونات الإضافية المقدمة بالكامل. نظرًا لأن المعالجة تتم من جانب العميل، فإن المحتوى الحساس جيد هنا.

الخطوة 2: اختر التشفير أو فك التشفير

يقوم الترميز بتحويل الأحرف الأولية إلى كيانات (<&lt;) - استخدمه عندما تريد عرض العلامات كنص. يؤدي فك التشفير إلى إعادة الكيانات إلى الأحرف (&amp;&) - استخدمه عندما تقوم &#39؛إعادة قراءة المحتوى الذي تم الهروب منه. إذا كنت &#39؛ لست متأكدًا من الحالة التي يوجد بها النص الخاص بك، قم بفك التشفير أولاً وشاهد التغييرات. الإخراج غير المتغير يعني أنه كان واضحًا بالفعل.

الخطوة 3: اختر النمط المرجعي (عند التشفير)

يحتوي الوضع المنسدل على ثلاثة خيارات بالضبط، والاختيار مهم أكثر مما يبدو. اسمه يقوم بتشفير كل ما يحمل اسمًا له ويعود إلى العلامة العشرية للباقي - يمكن قراءته من حيث المصدر والاختلافات، ولكنه يهرب أيضًا ©، ، é وكل حرف آخر غير ASCII، والذي يؤدي إلى تضخم الإخراج إذا كنت &#39؛re على UTF-8 على أي حال. رقمي يفعل نفس التغطية بالنظام العشري النقي. الأحرف الخاصة فقط لا يلمس شيئا سوى & < > " ' ويترك لهجاتك وشرطاتك الإلكترونية ورموزك التعبيرية كـ UTF-8 خام - هذا هو الذي أستخدمه للمحتوى الحقيقي، وهو &#39؛s الوضع الذي يطابق ماذا htmlspecialchars() يفعل في PHP. لاحظ أن ' دائما يخرج كما &#39;أبدا &apos;في جميع الأوضاع الثلاثة؛ هذا &#39؛s متعمد، منذ ذلك الحين &apos; غير محدد في HTML 4 ولا يزال عملاء البريد الإلكتروني الأقدم يختنقون به.

الخطوة 4: تحقق من الإخراج، ثم انسخه

اضغط على تشفير أو فك تشفير وقراءة الجزء الأيمن. بالنسبة لمهام فك التشفير، ابحث خصيصًا عن البقايا &amp; التسلسلات - الناجي يعني أن النص قد تم الهروب منه مرتين، لذا اضغط على "مبادلة" وفك التشفير مرة أخرى. عندما يقرأ نظيفًا، انسخ النتيجة إلى القالب أو نظام إدارة المحتوى أو الكود الخاص بك. بالنسبة للمهام المتكررة، قم برحلة ذهابًا وإيابًا مرة واحدة (التشفير ثم فك التشفير) للتأكد من عدم حدوث أي فقدان؛ مع وضع الأحرف الخاصة فقط، تكون الرحلة ذهابًا وإيابًا دقيقة.

تم تسميتها مقابل الكيانات الرقمية - والشخصيات الخمسة التي تهم بالفعل

Let&#39؛s تحصل على المصطلحات بشكل مستقيم، لأن &quot؛ كيان واقتباس HTML؛ يتم استخدامه بشكل فضفاض. يحدد معيار WHATWG HTML - المواصفات الحية التي تحدد كيفية قيام المتصفحات بتحليل HTML فعليًا - جدولًا مراجع الأحرف المسماة: أكثر من 2200 اسم مثل &nbsp;، &mdash;، &hellip;، &rarr;، كل تعيين لواحدة أو نقطتين من رموز Unicode. بشكل منفصل، مراجع الأحرف الرقمية تتيح لك معالجة أي نقطة رمز مباشرة: العلامة العشرية (&#8212;) أو الست عشري (&#x2014;). نفس الشرطة، ثلاث تهجئات.

هنا &#39؛ وجهة نظري، والتي شحذتها سنوات من عمل WordPress من بين 2200+ اسم، هناك خمسة أحرف فقط مهمة من حيث الصحة والسلامة. كل شيء آخر هو طباعة، وعلى صفحة UTF-8 - وهي كل صفحة يجب أن تقوم بشحنها في عام 2026 - يمكنك فقط كتابة الحرف الحقيقي. أنت لا &#39؛تحتاج &mdash;؛ تحتاج - . الخمسة المهمون هم الذين لهم معنى نحوي في HTML:

شخصية كيان لماذا يهم
& &amp; يبدأ كل كيان - شخصية الهروب نفسها
< &lt; يفتح العلامات
> &gt; يغلق العلامات
" &quot; يحدد السمات المقتبسة بشكل مزدوج
' &#39; يحدد السمات المقتبسة بشكل فردي

لاحظ الصف الأخير: &#39;لا &apos;. الاسم &apos; صالح في HTML5، لكنه كان &#39؛ جزء من HTML4، ويمكن للأدوات القديمة (وعملاء البريد الإلكتروني القدامى - المزيد عن هؤلاء الأحدث) التعثر فيه. النموذج الرقمي يعمل في كل مكان. هذا هو نوع التحذلق الذي يوفر عليك تقرير أخطاء مربكًا.

ترتيب العمليات هو اللعبة بأكملها. عند الترميز، & يجب الهروب أولاً. إذا هربت < إلى &lt; ثم اهرب من علامات الضم، أنت &#39؛ سأحول مخرجاتك الخاصة إلى &amp;lt;- تهانينا، أنت &#39؛ لقد هربنا مرتين. فك التشفير هو صورة معكوسة: &amp; يجب حلها أخير، أو &amp;lt; يصبح &lt; يصبح < وأنت &#39؛ لقد تم فك تشفيرها بشكل ناقص (أو ما هو أسوأ من ذلك، إعادة تقديم العلامات المباشرة من النص الذي تم الهروب منه عمدًا). تقريبًا كل خطأ هروب ملفوف يدويًا تمت مراجعته I&#39؛ لقد قمت بمراجعته - بما في ذلك خطأي - هو خطأ في الطلب.

السياق مهم، وهنا يلتقي الهروب بالأمن. تعتبر ورقة الغش الخاصة بمنع البرمجة النصية عبر المواقع OWASP صريحة بشأن هذا الأمر: تشفير كيان HTML هو الدفاع الصحيح عن HTML جسم و سمة السياقات، ولكن هو كذلك لا كافية لسلاسل JavaScript أو عناوين URL أو CSS. &lt; داخل أ <script> فك تشفير Block dos&#39؛t - يتم تحليل محتوى البرنامج النصي &#39؛t للكيانات - لذا فإن ترميز الكيان لا يفعل شيئًا مفيدًا هناك. يحتاج كل سياق إلى برنامج تشفير خاص به: تشفير الكيان لـ HTML، \uXXXX الهروب لسلاسل JS، والترميز المئوي لعناوين URL (that&#39؛s ما لدينا URL ترميز/فك تشفير URL مخصص ل). إن استخدام برنامج التشفير الصحيح في السياق الخاطئ هو الطريقة الكلاسيكية التي تظل بها التعليمات البرمجية ذات المظهر المطهر قابلة للاستغلال.

على جانب PHP، تعرف على وظيفتيك. htmlspecialchars() يهرب فقط من العروض الخمسة الخاصة (تمرير ENT_QUOTES أو ستفتقد الاقتباس الوحيد - مسكتك الحقيقية). htmlentities() يهرب كل شئ التي لديها كيان مسمى، تحول ü في &uuml;. على صفحات UTF-8، htmlentities() هو دائما تقريبا الاختيار الخاطئ؛ فهو يؤدي إلى تضخم الإخراج وتشويه المحتوى عندما يتم الإعلان عن مجموعات الأحرف بشكل خاطئ. يغلف WordPress هذا بشكل معقول:

echo esc_html( $footer_text );              // body context
echo '<a title="' . esc_attr( $title ) . '">'; // attribute context

esc_html() و esc_attr() كلاهما يهرب من العروض الخاصة الخمسة باستخدام العلامات الصحيحة، التي تم اختيارها لكل سياق - وهو بالضبط النظام الذي يصفه OWASP للهروب المتأخر. القاعدة التي أتعمق فيها في كل مراجعة للتعليمات البرمجية: الهروب في وقت الإخراج، في سياق الإخراج &#39؛s، مرة واحدة بالضبط.

مما يعيده إلى المنزل: مع UTF-8، نادرًا ما تفعل ذلك يحتاج كيانات للأحرف المطبعية على الإطلاق. أنت بحاجة إليها للأحرف ذات الأهمية الترميزية وللمدخلات غير الموثوق بها. كل شيء آخر هو عادة قديمة.

حالات الاستخدام الشائعة

عرض مقتطفات التعليمات البرمجية في منشورات المدونة والمستندات

كتابة برنامج تعليمي يحتوي على <script> أو <?php وقم بلصقه في نظام إدارة المحتوى الخام، وسيحاول المتصفح ذلك تنفيذ أو ابتلاع المثال الخاص بك بدلا من عرضه. يحتاج كل نموذج تعليمات برمجية في سياق HTML <، >، و & مشفر. أفعل هذا باستمرار لوثائق المكونات الإضافية - HTML التمهيدي، ومقالات قاعدة المعرفة، والأمثلة المضمنة في علامات تبويب مساعدة واجهة المستخدم الإدارية. سير العمل: اكتب المقتطف، وقم بتشغيله من خلال التشفير الكيان، الصق النسخة التي تم الهروب منها بالداخل <pre><code>. ثلاثون ثانية، و الخاص بك &lt;script&gt; يعرض كما <script> بدلا من التلاشي في DOM. إذا كنت &#39؛ يتم إنشاء سير عمل المستندات بشكل عام، لدينا دليل أدوات الترميز يغطي بقية صندوق الأدوات حول هذا.

تنظيف النص ذو النطاق المزدوج من قواعد البيانات والخلاصات

ال &amp;amp; الطاعون. يظهر عندما يهرب نظام إدارة المحتوى عند الحفظ، ويتسرب مكون إضافي عند العرض، وتهرب طبقة التخزين المؤقت بشكل مفيد مرة أخرى. لقد قمت ذات مرة بشحن سجل تغيير WP Adminify حيث اختلف المحلل اللغوي لـ Wordpress.org والنص النصي الخاص بي حول من يهرب - كان سجل التغيير المعروض مرئيًا بـ 23 &amp;s فيه قبل أن يرسل لي المستخدم بريدًا إلكترونيًا. خلاصات RSS أسوأ؛ غالبًا ما يتم الهروب من محتوى الخلاصة بتنسيق HTML داخل XML، لذلك يقوم المستهلكون بشكل روتيني بفك تشفيرها بشكل زائد أو ناقص. الإصلاح هو فك التشفير التشخيصي: لصق النص المكسور، وفك تشفير تمريرة واحدة في كل مرة، وحساب عدد التمريرات حتى يتم تنظيفه &#39؛s. هذا العدد يساوي عدد الطبقات المتسربة - الآن أنت تعرف بالضبط عدد أجزاء خط الأنابيب الخاص بك التي تلامس النص، ويمكنك العثور على الجزء الزائد.

إعداد المحتوى الذي ينشئه المستخدم بأمان

التعليقات، ونص المراجعة، والسير الذاتية للملف الشخصي، وتذاكر الدعم - أي شيء يكتبه المستخدم غير موثوق به، وغالبًا ما يحتوي على معلومات تحديد الهوية الشخصية: الأسماء الحقيقية، ورسائل البريد الإلكتروني، والعناوين. هناك مصدران للقلق يتصادمان هنا. أولاً، السلامة: يجب أن يكون هذا المحتوى مشفرًا بالكيان عند الإخراج أو أنت &#39؛re واحد <img onerror=...> بعيدًا عن XSS المخزن (اسألني عن حقل الإعدادات الذي كدت أن أشحنه). ثانيًا، الخصوصية: عندما تقوم أنت و#39؛إعادة تصحيح الأخطاء لماذا يقوم مستخدم معين &#39؛s بكسر تخطيطك، أنت &#39؛re التعامل مع بياناته الشخصية - لصقها في محول من جانب الخادم يعني شحن معلومات تحديد الهوية الشخصية إلى طرف ثالث. تقوم أداة Toolz.dev بمعالجة كل شيء محليًا، لذا فإن اختبار سلاسل المشكلات الحقيقية آمن. تشفير العينة، وفحص القالب الخاص بك ينبغي لقد أنتجت، تختلف عن ما أنتجته.

قوالب HTML للبريد الإلكتروني

البريد الإلكتروني HTML هو تطوير ويب باستخدام محرك عرض عمره 20 عامًا. يتعامل بعض العملاء مع UTF-8 الخام بشكل جيد؛ البعض الآخر - اعتمادًا على كيفية قيام مجموعات ESP الخاصة بك بنقل الترميزات - يقوم بتشويه الأحرف المطبعية في mojibake. التقليد الدفاعي الذي لا يزال العديد من مطوري البريد الإلكتروني يتبعونه: تشفير الطباعة غير ASCII ككيانات (&mdash;، &rsquo;، &nbsp; بالنسبة لاختراق المسافات) فإن البايتات الموجودة على السلك تكون ASCII خالصة. وتذكر &#39; انتهى &apos;- المحركات الأقدم لـ Outlook&#39؛s هي بالضبط الأدوات التي لم تتعلم أسماء HTML5 مطلقًا. نظرًا لأن القوالب يتم تخصيصها بأسماء العملاء وعناوينهم، فهذا مرة أخرى محتوى I&#39؛d يتم تشغيله فقط من خلال أداة من جانب العميل. قم بتشفير القالب مرة واحدة، واحتفظ بحقول الدمج خام، واهرب منها في وقت الدمج.

فك تشفير المحتوى المقطوع واستجابات واجهة برمجة التطبيقات

قم بكشط صفحة أو استهلك واجهة برمجة تطبيقات قذرة وستغرق أنت و#39؛ &#8217;، &#8220;، &amp;، و &nbsp;. تقوم بعض واجهات برمجة التطبيقات بإرجاع سلاسل مشفرة بالكيان داخل JSON - وهو تنسيق لا يحتاج إلى هروب HTML على الإطلاق - حتى تحصل على عناصر مثل "title": "Fish &amp; Chips". قبل أن تنتقل هذه البيانات إلى قاعدة البيانات الخاصة بك، قم بفك تشفيرها لتنظيف UTF-8؛ تخزين النص الأساسي، والهروب عند الإخراج. لقد قمت بذلك باستمرار عند استيراد المحتوى إلى تطبيقات Laravel: قم بفك تشفير الكيانات أولاً ثم طباعة جميلة وفحص الحمولة مع تنسيق JSON. القيام بذلك بالترتيب الآخر يعني قراءة JSON حيث يبلغ طول كل فاصلة عليا سبعة أحرف. إذا كانت الحمولة مغلفة بقاعدة 64 فوق ذلك - فإن بعض موفري خطاف الويب يفعلون ذلك - فإن محول BASE64 يتعامل مع الطبقة الخارجية، و دليل الترميز BASE64 يشرح سبب وجود هذا التغليف.

توطين المحتوى بأحرف خاصة

تصل ملفات الترجمة في كل حالة يمكن تخيلها. يرسل أحد البائعين UTF-8 نظيفًا ü؛ آخر يرسل &#252;؛ والثالث يرسل &uuml;؛ في بعض الأحيان تحصل على الثلاثة في ملف أمر الشراء واحد. قبل الاستيراد، أقوم بتطبيع كل شيء إلى UTF-8 الخام من خلال تمرير فك التشفير - التخزين الأساسي، والبحث المتسق، والاختلافات المعقولة. وينطبق الشيء نفسه على علامات الترقيم RTL، وأقواس CJK، واللاتينية المحركة في السلاسل المشحونة. قم بفك التشفير عند الاستيراد، وقم بتخزين الأحرف الحقيقية، ودع طبقة الإخراج الخاصة بك تفلت فقط من العروض الخمسة الخاصة. سوف يشكرك المترجمون أيضًا &#252;ber ليست كلمة يجب على أي شخص تدقيقها.

اسمه مقابل العشري مقابل السداسي مقابل الخام UTF-8: ما الذي يجب عليك استخدامه؟

استمارة مثال (em-dash) سهولة القراءة دعم المتصفح متى تستخدم
الكيان المسمى &mdash; جيد - وصف الذات عالمي لأسماء عصر HTML4؛ أسماء HTML5 فقط (مثل &apos;) فشل في الأدوات القديمة العروض الخمسة الخاصة؛ السياقات القديمة مثل البريد الإلكتروني HTML
مرجع عشري &#8212; فقير - it&#39؛s رقم عالمي، بما في ذلك المحللون القدامى شخصيات بدون أسماء؛ الهروب من أقصى قدر من التوافق (&#39;)
مرجع سداسي عشري &#x2014; ضعيف، ولكن يتم تعيينه إلى نقاط كود Unicode عالمي في أي شيء حديث عن بعد عند الإسناد الترافقي لمخططات أو مواصفات Unicode
Utf-8 الخام ممتاز عالمي على صفحات UTF-8 المعلنة بشكل صحيح كل شيء مطبعي - يجب أن يكون هذا هو الإعداد الافتراضي الخاص بك

موقفي بكل وضوح: اكتب UTF-8 الخام للطباعة والكيانات الاحتياطية للعروض الخاصة الخمسة والمدخلات غير الموثوقة. وثيقة مليئة &mdash; و &hellip; هو مستند لا يمكن لأحد تدقيقه، وهو يشير إلى سير العمل الذي يثق في إعلانات مجموعة الأحرف الخاصة به منذ عام 2008. الأكوام الحديثة - WordPress، Laravel، Next.js، كل قاعدة بيانات أنت &#39؛ اختر اليوم - هي UTF-8 من النهاية إلى النهاية. اكتب الحرف الحقيقي.

حيث تكسب الكيانات رزقها: &amp;، &lt;، &gt;، &quot;، و &#39; لأي شيء يمكن تفسيره على أنه ترميز، دائمًا، بدون استثناءات، يتم تطبيقه في وقت الإخراج. وفي بيئات العرض المعادية - عملاء البريد الإلكتروني، والخلاصات التي يستهلكها محللون غير معروفين - تعد المراجع الرقمية خيارًا بجنون العظمة ولكن مبررًا لأنها تسبق كل وسيطة توافق. بين العشري والسداسي، it&#39؛s الذوق؛ أنا أتكئ السداسي لأنه &#x2014; يطابق U+2014 ويمكنني التوقف عن إجراء التحويلات الأساسية في رأسي.

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

ما هو كيان HTML؟

كيان HTML هو تسلسل نصي يمثل حرفًا بدلاً من كتابة الحرف مباشرة. يبدأ بعلامة الضم وينتهي بفاصلة منقوطة. هناك مراجع مسماة مثل &amp؛ و &نسخ؛ والمراجع الرقمية مثل &#169؛ (عشري) أو &#xA9؛ (ست عشري) تشير إلى نقطة رمز Unicode. تقوم المتصفحات بحلها أثناء التحليل، لذا &lt؛ يتم عرضها كعلامة أقل من بدلاً من فتح علامة. وهي موجودة حتى تتمكن من إظهار الأحرف التي يمكن تفسيرها على أنها علامات.

ما هي الأحرف التي يجب الهروب منها في HTML؟

خمسة: علامة العطف، أقل من، أكبر من، اقتباس مزدوج، واقتباس فردي - مكتوب كـ &amp؛، &lt؛، &gt؛، &quot؛ و &#39؛. علامة العطف، لأنها تبدأ الكيانات؛ الأقواس الزاوية، لأنها تحدد العلامات؛ علامات الاقتباس، لأنها تحدد قيم السمات. في النص الأساسي للعنصر، يمكنك الإفلات من الثلاثة الأولى فقط، ولكن الهروب من الخمسة في كل مكان هو العادة التي لا تعضك أبدًا. كل شيء آخر - اللهجات والشرطات والرموز التعبيرية - يمكن أن يكون UTF-8 خامًا على صفحة معلنة بشكل صحيح.

ما الفرق بين &lt؛ مكتوب ككيان مسمى و &#60؛؟

لا شيء، بمجرد أن يقوم المتصفح بتوزيعها - كلاهما ينتج علامة أقل من. النموذج المسمى هو بحث في جدول WHATWG القياسي &#39؛ للمراجع المسماة؛ &#60؛ يتناول نقطة رمز Unicode 60 مباشرة، و&#x3C؛ هي نفس نقطة الرمز في الشكل السداسي. الكيانات المسماة أسهل على البشر في القراءة؛ تعمل المراجع الرقمية مع جميع الأحرف، بما في ذلك الآلاف التي ليس لها اسم. بالنسبة للعروض الخاصة الشائعة، اختر أيهما يجده فريقك أكثر قابلية للقراءة - المتصفحات لا تهتم.

لماذا تظهر صفحتي &amp؛amp؛ بدلا من علامة العطف؟

الهروب المزدوج. هربت بعض طبقات المكدس الخاص بك من سلسلة تم الهروب منها بالفعل، مما أدى إلى تحويل &amp؛ إلى &amp؛amp؛. يقوم المتصفح بفك تشفير مستوى واحد ويعرض ما تبقى. وهذا يعني عادةً أن مكونين يعتقدان أن الهروب هو مهمتهما - نظام إدارة المحتوى الموجود على الحفظ بالإضافة إلى قالب العرض هو الزوج الكلاسيكي. فك تشفير السلسلة تمريرة واحدة في كل مرة في وحدة فك التشفير؛ عدد التمريرات حتى تقرأ نظيفة يساوي عدد الطبقات التي تفلت منها. ثم اجعل طبقة واحدة مسؤولة بالضبط، في وقت الإخراج.

هل الهروب من HTML يمنع XSS؟

في سياقات نص HTML والسمات، نعم - المدخلات غير الموثوقة لترميز الكيان، يوجد الدفاع الأساسي، لأن الحمولة النافعة تظهر كنص خامل. لكنها ليست كافية في كل مكان. ورقة الغش الخاصة بمنع OWASP XSS واضحة بأن كل من سلاسل JavaScript وعناوين URL وCSS تحتاج إلى ترميز خاص بها خاص بالسياق؛ تشفير الكيان داخل كتلة البرنامج النصي لا يفعل شيئًا. الهروب عند الإخراج، في السياق الذي تقوم بالإخراج إليه، باستخدام برنامج التشفير context&#39؛s. يعد تشفير الكيان إحدى الأدوات في تلك المجموعة، وليس المجموعة بأكملها.

ما الفرق بين htmlspecialchars وhtmlentities في PHP؟

htmlspecialchars () يهرب فقط من الأحرف ذات العلامات المهمة - ويجب عليك اجتياز ENT_QUOTES بحيث يغطي الاقتباس الفردي. تقوم htmlentities () بتحويل كل حرف له كيان مسمى، بحيث تصبح الأحرف المميزة أشياء مثل مرجع uuml. في صفحات UTF-8، تكون htmlspecialchars () دائمًا ما تريده؛ تعمل htmlentities () على تضخيم الإخراج وتسبب mojibake عند تكوين مجموعات الأحرف بشكل خاطئ. يتجنب مطورو WordPress السؤال في الغالب باستخدام esc_html() وesc_attr()، اللذين يطبقان العلامات الصحيحة لكل سياق.

هل يجب أن أستخدم الكيان المسمى apos للفواصل العليا؟

تفضل &#39؛. اسم apos صالح في HTML5 ولكنه لم يكن أبدًا جزءًا من HTML4، لذا فإن المحللين الأقدم - بما في ذلك محركات العرض داخل بعض عملاء البريد الإلكتروني - لا يتعرفون عليه وسيعرضونه حرفيًا. النموذج الرقمي &#39؛ يعني نفس الحرف ويعمل في كل شيء تم شحنه على الإطلاق. إنه اختيار قبيح ولكنه آمن، وهو عادةً المقايضة الصحيحة للهروب. إذا كنت تعرف أن مخرجاتك تصل فقط إلى المتصفحات الحديثة، فإن apos جيد؛ قوالب البريد الإلكتروني هي بالضبط المكان الذي لا يمكنك معرفة ذلك فيه.

هل من الآمن لصق بيانات المستخدم في محول كيان عبر الإنترنت؟

فقط إذا كانت الأداة تعالج النص في متصفحك. يحتوي المحتوى الذي ينشئه المستخدم وقوالب البريد الإلكتروني بشكل روتيني على أسماء ورسائل بريد إلكتروني ومعلومات تعريف الارتباط الأخرى، وقد تلقى المحول الذي ينشر مدخلاتك إلى الخادم تلك البيانات للتو دون وجود اتفاق. يعمل برنامج تشفير/فك تشفير كيانات HTML Toolz.dev بنسبة 100% من جانب العميل - بدون تحميل أو تسجيل، ويعمل دون اتصال بالإنترنت بمجرد تحميل الصفحة. إذا لم تتمكن من التحقق من كيفية تعامل الأداة مع الإدخال، فلا تقم بلصق بيانات الإنتاج فيه.

الهروب مرة واحدة، في المكان الصحيح

إذا أخذت شيئًا واحدًا من عقد من أخطائي في الهروب، فخذ هذا: يجب أن تفلت طبقة واحدة بالضبط من مجموعتك، ويجب أن تكون طبقة الإخراج. قم بتخزين UTF-8 نظيفًا. اهرب من العروض الخمسة الخاصة في وقت العرض، في السياق الذي تقدمه أنت و#39؛ في. كل &amp;amp; يوجد في الإنتاج خريطة لمكونين يتقاتلان حول هذه المهمة - وكل سلسلة مستخدم لم يتم الهروب منها هي عبارة عن XSS مخزن في انتظار مراجعة التعليمات البرمجية التي قد لا تحدث. الألغام تقريبا لم &#39؛ر.

احتفظ ب تشفير/فك تشفير كيانات HTML في دورة تصحيح الأخطاء الخاصة بك جنبًا إلى جنب مع أشقائها - URL ترميز/فك تشفير URL لسياقات ترميز النسبة المئوية ( دليل ترميز URL يمشي عبر %2520، ابن عم ترميز النسبة المئوية لـ &amp;amp;)، ال محول BASE64 للحمولات المغلفة، و محول الحالة للعمل الناخر لإعادة تسمية المعرف بينهما. ال دليل أدوات الترميز يمشي المجموعة بأكملها.

وبما أن السلاسل التي تقوم بتصحيح أخطائها غالبًا ما تكون اسمًا حقيقيًا أو بريدًا إلكترونيًا لـ &#39؛: كل شيء أعلاه يعمل من جانب العميل، ولا يتم تحميل أي شيء، ويمكن التحقق منه في علامة تبويب الشبكة الخاصة بك. هذا &#39؛s ليس تسويقًا - إنه &#39؛s السبب وراء بناء هذه الأدوات بالطريقة التي قمت بها. المزيد عن تلك الفلسفة في دليل خصوصية البيانات.

Frequently Asked Questions

An HTML entity is a text sequence that represents a character instead of writing the character directly. It starts with an ampersand and ends with a semicolon. There are named references like &amp; and &copy;, and numeric references like &#169; (decimal) or &#xA9; (hex) that point at a Unicode code point. Browsers resolve them while parsing, so &lt; displays as a less-than sign instead of opening a tag. They exist so you can show characters that would otherwise be interpreted as markup.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!