Pegjs: قم بإضافة بديل غير مُقيَّم لتوافق نهج أمان المحتوى

تم إنشاؤها على ٢٤ أكتوبر ٢٠١٩  ·  12تعليقات  ·  مصدر: pegjs/pegjs

إعادة بناء ديون: إزالة "EVAL" من المكتبة

  • تقرير الشوائب: سياسة أمان المحتوى

المتطلبات الأساسية

  • ** هل يمكنك إعادة إظهار المشكلة ؟: نعم
  • ** هل بحثت في مشكلات المستودع ؟: نعم
  • ** هل قمت بفحص المنتديات ؟: لا
  • ** هل أجريت بحثًا على الويب (google ، yahoo ، إلخ) ؟: نعم

وصف

خطوات التكاثر

1.رأس مجموعة الخادم: Content-Security-Policy: default-src https:

  1. تحميل vendor.js إلى العميل
  2. محاولة تحليل () مع pegjs:
    خطأ (أدوات chrome dev): رفض تنفيذ البرنامج النصي المضمّن لأنه ينتهك توجيه سياسة أمان المحتوى التالي: "script-src 'self' 'unsafe-Eval'". إما الكلمة الأساسية "غير آمنة مضمنة" ، يلزم وجود تجزئة ("sha256-NALaJ5yL9XVYFNSX8jAdayjJGG7VDRjzVeu1AYf0Kx0 =") ، أو nonce ("nonce -...") لتمكين التنفيذ المباشر.

برمجة

  • PEG.js: ^ 0.10.0
  • Node.js: 8.12.0
  • NPM أو الغزل: 6.41
  • المتصفح: Chrome 77 ، Safari ، Firefox
  • نظام التشغيل: Mac OS و Ubuntu
discussion feature not-a-bug task

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

أعتقد أنه من المفيد إضافة بديل غير eval للتوافق مع سياسة أمان المحتوى ؛ سوف نرى في هذا في مرحلة ما قبل 0.12 عن طريق إضافة حزمة أخرى (ربما تسمى dist/peg.csp.js ) عبر ملف إدخال جديد ليتم استهلاكه بواسطة Webpack فقط

ال 12 كومينتر

لا تبدو هذه مشكلة مع pegjs.
هل تقوم بتحميل البرامج النصية الخاصة بك من مصدر غير آمن (http؟)

يمكنني إعادة إنتاج هذا على بروتوكولات http و https. الأمر كله يتعلق بسياسة الأمن. إذا كانت الشفرة تستخدم وظيفة Eval ، فلن يتم تنفيذها ، وسيمنع المتصفح تنفيذها
لدي حل بديل لذلك ، لكنه ليس آمنًا.
مزيد من التفاصيل حول سياسة الأمان:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

الرابط الخاص بك هو لعناوين http. أنت تتحكم في أي رؤوس ترسلها على الخادم الخاص بك.

نعم ، هذا العنوان مرتبط بالأمان ، ولكن أي تطبيق في 2020 لن يفكر في الأمان. من الشائع استخدام هذا الأسلوب في تطبيقات الويب الحديثة.
لقد بحثت في Google قليلاً ولاحظت أن المكتبات الشعبية قد أجرت هذا التحديث بالفعل.
لذلك ، لا أعتقد أن العديد من التطبيقات ستتجاهل الأمان في المستقبل ، وتختار الأدوات المناسبة التي ستكون متوافقة مع هذا.

Pegjs هو مولد محلل ، وهو نوع من سلالة منفصلة من JS libs ،
كيف تعمل JS داخل القواعد بدون eval ing ذلك؟

لا أعتقد أن هذا حل جيد لمولد محلل. الأداء مهم جدًا هنا بعد كل شيء.

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

أعتقد أنه من المفيد إضافة بديل غير eval للتوافق مع سياسة أمان المحتوى ؛ سوف نرى في هذا في مرحلة ما قبل 0.12 عن طريق إضافة حزمة أخرى (ربما تسمى dist/peg.csp.js ) عبر ملف إدخال جديد ليتم استهلاكه بواسطة Webpack فقط

ربما لا تجعله webpack فقط. هذه المشكلة ليست خاصة بـ webpack ، و webpack في حالة تراجع سريع لصالح التراكمية والطرود

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

لا يجب وضع علامة على هذا not-a-bug . إنه ، في الواقع ، خطأ شديد.

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