خطأ CSP عند إضافة سكربت عبر مكون السكيما

مشكلة مع Strict Dynamic وسياسة أمان المحتوى (CSP) في ودجت Atlassian

أواجه مشكلة مع سياسة أمان المحتوى (CSP) بعد التحديث إلى الإصدار v3.3.0.beta1. على وجه التحديد، أحاول تضمين ودجت Atlassian في رأس الحاوية الخاصة بي، والتي تم إنشاؤها قبل هذا التحديث.

إليك ما أضفته إلى الرأس:

<script data-jsd-embedded nonce="{{content_security_policy_nonce}}" data-key="bla" data-base-url="https://jsd-widget.atlassian.com" src="https://jsd-widget.atlassian.com/assets/embed.js"></script>

لقد تأكدت من تضمين الـ nonce، لكنني أواجه الأخطاء التالية:

embed.js:1 Refused to set the document's base URI to 'https://jsd-widget.atlassian.com/' because it violates the following Content Security Policy directive: "base-uri 'self'".

embed.js:1 Refused to load the script 'https://jsd-widget.atlassian.com/assets/iframe.js' because it violates the following Content Security Policy directive: "script-src 'nonce-YAnMdLzmoWqLis3WXiQKjxdHk' 'strict-dynamic'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

بالإضافة إلى ذلك، صادفت اقتراحًا في منشور سابق لتحميل البرنامج النصي ديناميكيًا على هذا النحو:

var s = document.createElement('script');
s.src = "https://jsd-widget.atlassian.com/assets/embed.js";
document.body.appendChild(s);

ومع ذلك، لا يبدو أن هذا يحل المشكلة. من الواضح أنني أفتقد شيئًا ما حول كيفية عمل strict-dynamic في هذا السياق.

هل يمكن لأحد مساعدتي في فهم سبب حدوث هذه الأخطاء وكيف يمكنني حلها؟ أي توجيه سيكون موضع تقدير!

3 إعجابات

من المثير للاهتمام أنني كنت أبحث للتو في مشكلة مطابقة تقريبًا.

يمكنني تكرار مشكلة مماثلة في أحدث إصدار تم إعادة بنائه مؤخرًا.

أحصل على:

[Report Only] Refused to load the script 'https://www.mytestsite.com/mini-profiler-resources/includes.js?v=116e2a6fd81c286e004e2a0afb03baa1' because it violates the following Content Security Policy directive: "script-src 'nonce-ZSPIEwDBo6e07GuQMDkOFZerD' 'strict-dynamic'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
3 إعجابات

هل يمكن لأي منكما مشاركة رابط لموقع يوضح هذه المشكلة؟ يسعدني إلقاء نظرة سريعة :eyes:

إذا كنت قد أضفت هذا عبر مكونات السمة، فيجب عليك إزالة الجزء nonce=. سيضيف Discourse ذلك تلقائيًا (وأعتقد أن إضافته بنفسك قد يعطل النظام التلقائي)

3 إعجابات

لإغلاق هذه المسألة - ناقشت أنا و @merefield عبر رسالة خاصة، وتتبعنا المشكلة إلى قضية خاصة بوضع “Report Only”. الإصلاح هنا: FIX: Mini-profiler CSP nonce when in report-only mode by davidtaylorhq · Pull Request #28664 · discourse/discourse · GitHub

لذا يبدو أن هذه مشكلة مختلفة عن تلك التي يواجهها @devops1

4 إعجابات

مرحباً ديفيد، شكراً جزيلاً لك.
على الاستجابة السريعة.

الكود الذي أضيفه هو
<script data-jsd-embedded data-key="bla" data-base-url="https://jsd-widget.atlassian.com" src="https://jsd-widget.atlassian.com/assets/embed.js"></script>

لقد قمت بإزالة الـ nonce كما طلبت.

هذا هو الموقع https://onlinecommunity.stroke.org.uk/
لقد قمت بتفعيل سياسة أمان المحتوى في وضع الإبلاغ فقط.

إعجابَين (2)

هل تم تمكين مكون السمة؟ لا أرى أي نص برمجي من Atlassian عند التحقق في أدوات المطور

إعجاب واحد (1)

أعتقد أن هذا يجب أن يعمل الآن وقد عثرت على البرنامج النصي في مصدر الصفحة.

إعجابَين (2)

يبدو أن البرنامج النصي embed.js يعمل بنجاح، لذا فإن جانب Discourse يعمل.\n\nومع ذلك، فإنه يحاول بعد ذلك إنشاء إطار iframe بنفس المصدر، والذي يتضمن علامات البرنامج النصي ‘parser-inserted’. هذه الاستراتيجية غير متوافقة مع CSP صارم وديناميكي.\n\nلذلك أعتقد أن هذا شيء ستحتاج Atlassian إلى إصلاحه. لقد صادفت هذه المشكلة على متتبعهم والتي تبدو ذات صلة (على الرغم من أنها لا تحتوي على الكثير من التفاصيل، أو حل :cry:)

إعجابَين (2)

شكراً جزيلاً لك على النظر في المشكلة نيابة عني يا ديفيد.

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.