Handlebars.js: يقيد بيان امتداد Chrome v2 استخدام EVAL

تم إنشاؤها على ٢٥ فبراير ٢٠١٣  ·  5تعليقات  ·  مصدر: handlebars-lang/handlebars.js

لن تعمل المقاود في امتدادات Chrome مع manifest_version: 2 بسبب سياسة الأمان الجديدة التي تقيد استخدام البنية EVAL والمشابه للتقييم.

Uncaught EvalError: رفض تقييم سلسلة على أنها JavaScript لأن "غير الآمن" ليس مصدرًا مسموحًا به للنص البرمجي في توجيه سياسة أمان المحتوى التالي: "script-src 'self' chrome-extension-Resource:".
المقاود. js: 1402
JavaScriptCompiler.createFunctionContext handlebars.js: 1402
JavaScriptCompiler.compile handlebars.js: 1320
تجميع المقاود. js: 2105
(وظيفة مجهولة) handlebars.js: 2112
(وظيفة مجهولة) panel.js: 14 <--- البرنامج النصي الخاص بي يسمى Handlebars.compile ()

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

هذا يتعارض بشكل أساسي مع الهدف الكامل لاستخدام CSP لمنع الحقن.

ال 5 كومينتر

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

هذا مقلق بالنسبة لي. هذا اقتباس من صفحة Google:

"نحن ندرك ، مع ذلك ، أن مجموعة متنوعة من المكتبات تستخدم البنية Eval () والتركيبات الشبيهة بالتقييم مثل الوظيفة الجديدة () لتحسين الأداء وسهولة التعبير. مكتبات القوالب معرضة بشكل خاص لهذا النمط من التنفيذ. _ في حين أن بعض المكتبات (مثل Angular .js) يدعم CSP خارج الصندوق ، _ لم يتم تحديث العديد من أطر العمل الشائعة حتى الآن إلى آلية متوافقة مع عالم الإضافات الذي لا يتم تقييمه. لذلك ثبت أن إزالة دعم هذه الوظيفة أكثر إشكالية مما كان متوقعًا للمطورين. "

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

1) مزق المقاود
2) تجميع جميع القوالب الخاصة بي مسبقًا.

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

أليس من الممكن اتباع دليل CSP هنا؟

"يمكنك السماح بذلك عن طريق إضافة" تقييم غير آمن "إلى قائمة مصادرك"

هذا يتعارض بشكل أساسي مع الهدف الكامل لاستخدام CSP لمنع الحقن.

FWIW ، Cloudant (استنادًا إلى Apache CouchDB) قام مؤخرًا بتغيير معالجة البرنامج النصي في قاعدة البيانات لمنع eval() و new Function() https://console.bluemix.net/docs/services/Cloudant/release_info /deprecations.html#disabled -javascript-constructors

يعمل التحويل البرمجي المسبق للقوالب في JS مع بعض السيناريوهات ، ولكن ليس لجميع السيناريوهات. سيكون من الرائع لو كانت هناك خيارات أخرى ، بحيث يمكن استخدام Handlebars.js المزيد من الأماكن.

لكن ... قد يكون هذا مجرد تمني. : مبتسم: 💭

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

القضايا ذات الصلة

stevenvachon picture stevenvachon  ·  7تعليقات

fcpauldiaz picture fcpauldiaz  ·  4تعليقات

LengYXin picture LengYXin  ·  3تعليقات

jlubean picture jlubean  ·  8تعليقات

nknapp picture nknapp  ·  3تعليقات