Mustache.js: قم بإلغاء كل القيم

تم إنشاؤها على ١٤ أغسطس ٢٠١٢  ·  14تعليقات  ·  مصدر: janl/mustache.js

هل سيكون من الممكن إضافة خيار لعدم القيام بأي هروب من لغة تأشير النص الفائق على الإطلاق؟

التعليق الأكثر فائدة

لم أختبره ، لكن وفقًا لصفحة الرجل:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
إذا لم يفلح ذلك ، يمكنك استخدام دالة تقوم ببساطة بإرجاع إدخالها دون تجاوز.

ال 14 كومينتر

لم أختبره ، لكن وفقًا لصفحة الرجل:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
إذا لم يفلح ذلك ، يمكنك استخدام دالة تقوم ببساطة بإرجاع إدخالها دون تجاوز.

نعم ، هذا هو السلوك الحالي ولكن حالة الاستخدام الخاصة بي لهذا لديها مدخلات موثوقة للغاية والكثير من الشخصيات الخاصة.

كنت أشير إلى هذا الجزء:
If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
لذا ، إذا كنت لا تريد تجاوز المتغيرات الخاصة بك ، فيجب عليك استخدام الشارب الثلاثي بدلاً من الضعف.
تحرير: لقد اختبرت ذلك وتم تنفيذه بشكل صحيح في هذا التنفيذ.

نعم ، كان يتساءل عما إذا كان قد يكون هناك اختصار مفيد لتغيير السلوك الافتراضي.

دعمت بعض التطبيقات عملية الهروب المقلوبة في الماضي (mustache.php v1.x و ruby ​​v0.8ish). أدى هذا بشكل أساسي إلى تبديل معنى {{ foo }} و {{{ foo }}} . يكون مفيدًا للاستخدام غير بتنسيق html ، مثل ملفات ini ، نظرًا لأن الهروب من كيانات html لا معنى له في هذه الحالة ، كما أنه يوفر لك مجموعة من الشوارب الإضافية.

على الرغم من ذلك ، لا يدعم Moustache.php v2.x هذا التطبيق العملي. اخترنا بدلاً من ذلك خيار "escape" المخصص ، مما يسمح للمستخدمين بتمرير رد اتصال بديل للهروب. يؤدي تمرير function($text) { return $text; } إلى الهروب إلى حالة عدم عمل.

حسنًا ، هذا يناسب حالة الاستخدام الخاصة بي تمامًا. هل من الممكن القيام بذلك في mustache.js ، وإذا كان الأمر كذلك ، فأين يمكنك تمرير هذه الوظيفة؟

حسنًا ، لا بأس من الالتزام بإرشادات OWASP ولكن الهروب في جميع الأوقات ليس مفيدًا في بعض الحالات. هل هناك أي وقت مقدر للوصول لهذه المشكلة؟

ألن يكون من الأسهل تبديل {{{ و {{ في المحلل اللغوي في التثبيت؟

في الوقت الحالي ، أركض للتو:

template.replace(/\{\{([^\}]*)\}\}/g, '{{{$1}}}');

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

janl ماذا لو كنت أرغب في عرض نفس القالب في سيناريوهين: الأول هارب ، والثاني بدون هروب؟

bobthecow يمكننا بسهولة اتباع نفس الأسلوب في

Mustache.escapeHtml = function (text) { return text; }

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

: +1: أحفرها. بقدر ما أستطيع أن أقول ، فإن حالة الاستخدام الرئيسية هي تعطيل الهروب تمامًا ، لأنه مستند ليس بتنسيق HTML. لا أرى فائدة كبيرة في تبديل escape / noescape (ولهذا لم أقم بتطبيقه حتى في Moustache.php v2).

نعم ، هذا من شأنه أن يفي بالتأكيد بحالة الاستخدام الخاصة بي ، ويمكنني أن أتصور أن يستخدمه بعض الأشخاص الآخرين على النحو التالي:

Mustache.escapeHtml = function (text) { return text.replace(/\"/g, '\\"'; }

للهروب من الخيوط. أو قد يقومون بتنفيذ وظائف القائمة البيضاء. باختصار ، ستصلح جميع حالات الاستخدام التي يمكنني التفكير فيها.

لم أختبره ، لكن وفقًا لصفحة الرجل:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
إذا لم يفلح ذلك ، يمكنك استخدام دالة تقوم ببساطة بإرجاع إدخالها دون تجاوز.

شكرا جزيلا !! هذا يعمل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات