سياسة أمان المحتوى في Magento 2

تحية للجميع!

بالتأكيد قمت بتثبيت Magento 2.3.5 ووجدت في وحدات تحكم المتصفح لديك شيئًا مثل

[الإبلاغ فقط] تم رفض تحميل البرنامج النصي "***" لأنه ينتهك توجيه سياسة أمان المحتوى التالي: "script-src *". لاحظ أن "script-src-elem" لم يتم تعيينه بشكل صريح ، لذلك يتم استخدام "script-src" كعمل احتياطي.



سأخبرك ماذا تفعل تحت الخفض

المقدمة


بدءًا من الإصدار 2.3.5 ، ظهرت وحدة تسمى Magento_CSP في Magento. وهو مسؤول عن سياسة أمان المحتوى ، وفي الواقع ، يضيف الرأس Content-Security-Policy ، أو بالأحرى ، بينما Content-Security-Policy-Report-Only . كما هو الحال دائمًا ، في الوقت المحدد والمتوقع تمامًا ، عند رفع إصدار "الإصلاح" :) كتبنا بالفعل عن



ماهية سياسة أمان المحتوى وما يتم تناوله في حبري .

يعتمد اختيار العنوان Content-Security-Policy أو Content-Security-Policy-Report-Only على بائع ملف التكوين / magento / module-csp / etc / config.xml بشكل منفصل للجزء الأمامي بشكل منفصل للجزء الإداري .

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <csp>
            <mode>
                <storefront>
                    <report_only>1</report_only>
                </storefront>
                <admin>
                    <report_only>1</report_only>
                </admin>
            </mode>
        </csp>
    </default>
</config>

في نفس المكان في توجيه "report_uri" ، يمكن للمرء تعيين عنوان URL للتقرير ، ولكن منذ ذلك الحين إنه غير موجود ، ثم يحمر الكروم وحدة التحكم بلا رحمة برسالة عن غيابه.



نص خطأ عينة
The Content Security Policy 'font-src 'self' 'unsafe-inline'; form-action secure.authorize.net test.authorize.net geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com 'self' 'unsafe-inline'; frame-ancestors 'self' 'unsafe-inline'; frame-src secure.authorize.net test.authorize.net geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com www.paypal.com www.sandbox.paypal.com 'self' 'unsafe-inline'; img-src widgets.magentocommerce.com www.googleadservices.com www.google-analytics.com t.paypal.com www.paypal.com www.paypalobjects.com fpdbs.paypal.com fpdbs.sandbox.paypal.com *.vimeocdn.com s.ytimg.com 'self' 'unsafe-inline'; script-src assets.adobedtm.com secure.authorize.net test.authorize.net geostag.cardinalcommerce.com 1eafstag.cardinalcommerce.com geoapi.cardinalcommerce.com 1eafapi.cardinalcommerce.com songbird.cardinalcommerce.com includestest.ccdc02.com js.authorize.net jstest.authorize.net www.googleadservices.com www.google-analytics.com www.paypal.com www.sandbox.paypal.com www.paypalobjects.com t.paypal.com js.braintreegateway.com s.ytimg.com video.google.com vimeo.com www.vimeo.com cdn-scripts.signifyd.com www.youtube.com 'self' 'unsafe-inline' 'unsafe-eval'; style-src getfirebug.com 'self' 'unsafe-inline'; object-src 'self' 'unsafe-inline'; media-src 'self' 'unsafe-inline'; manifest-src 'self' 'unsafe-inline'; connect-src geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com 'self' 'unsafe-inline'; child-src 'self' 'unsafe-inline'; default-src 'self' 'unsafe-inline' 'unsafe-eval'; base-uri 'self' 'unsafe-inline';' was delivered in report-only mode, but does not specify a 'report-uri'; the policy will have no effect. Please either add a 'report-uri' directive, or deliver the policy via the 'Content-Security-Policy' header.

كيفية إضافة عنوان url الخاص بك إلى السياسة؟


قم بإنشاء ملف في جذر المجلد etc / module باسم csp_whitelist.xml والمحتوى

<?xml version="1.0" encoding="UTF-8"?>
<csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Csp:etc/csp_whitelist.xsd">
    <policies>
        <policy id="POLICY_ID">
            <values>
                <value id="VALUE_ID" type="TYPE" algorithm="ALGORITHM">SOME DOMAIN</value>
            </values>
        </policy>
    </policies>
</csp_whitelist>

حيث POLICY_ID هي واحدة من:

  • افتراضي-src
  • النصي-src
  • object-src
  • style-src
  • img-src
  • media-src
  • إطار-src
  • font-src
  • ربط src

VALUE_ID - اسم فريد عشوائي
نوع - نوع ، يمكن أن يأخذ نطاق القيم أو التجزئة
ALGORITHM - خوارزمية التجزئة (مع TYPE = التجزئة) ، على سبيل المثال sha256

دعونا نرى أمثلة من اختبار التكامل لـ Magento نفسه :

<?xml version="1.0"?>
<!--
/**
 * Copyright  Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Csp/etc/csp_whitelist.xsd">
    <policies>
        <policy id="object-src">
            <values>
                <value id="mage-base" type="host">https://magento.com</value>
                <value id="hash" type="hash" algorithm="sha256">B2yPHKaXnvFWtRChIbabYmUBFZdVfKKXHbWtWidDVF8=</value>
                <value id="hash2" type="hash" algorithm="sha256">B3yPHKaXnvFWtRChIbabYmUBFZdVfKKXHbWtWidDVF8=</value>
            </values>
        </policy>
        <policy id="media-src">
            <values>
                <value id="mage-base" type="host">https://magento.com</value>
                <value id="devdocs-base" type="host">https://devdocs.magento.com</value>
            </values>
        </policy>
    </policies>
</csp_whitelist>

All Articles