الأعراض: بعد التحديث إلى الإصدار 3.4، ظهرت رسالة “Oops” في المنتدى بأكمله. ومما زاد الأمر سوءًا، بقيت السجلات صامتة تمامًا بشأن هذا الأمر.
كان هناك مكون سمة مع “توسيع سياسة الأمان” بقيمة script-src: 'unsafe-eval' https://redacted.example.com
أدى هذا إلى تعطل المنتدى بأكمله بسبب استثناء تم طرحه في موزع الإجراءات، لأنه كان هناك مسافة في القيمة.
ActionDispatch::ContentSecurityPolicy::InvalidDirectiveError (Invalid Content Security Policy script-src: \"'unsafe-eval' https://redacted.example.com\". Directive values must not contain whitespace
or semicolons. Please use multiple arguments or other directive methods instead.)
هذا التغيير في السلوك في التعامل مع توجيهات CSP نبع من تصحيح أمني تم إعادته في Rails - لقد تطرقت إلى هذا بمزيد من التفصيل في طلب السحب. سيقوم Discourse الآن بتصفية هذه القيم قبل بناء CSP.
فيما يتعلق بالوضع الآمن، بما أنه يقوم بتعطيل جانب JavaScript فقط، فلن يساعد هنا بما أن هذه البيانات تتم معالجتها من جانب الخادم.