Kebijakan Keamanan Konten di Magento 2

Halo semuanya!

Tentunya Anda menginstal Magento 2.3.5 dan menemukan di konsol browser Anda sesuatu seperti

[Laporkan Saja] Ditolak untuk memuat skrip '***' karena melanggar arahan Kebijakan Keamanan Konten berikut: "script-src *". Perhatikan bahwa 'script-src-elem' tidak diatur secara eksplisit, jadi 'script-src' digunakan sebagai fallback.



Saya akan memberi tahu Anda apa yang harus dilakukan di bawah potongan

pengantar


Dimulai dengan versi 2.3.5, modul bernama Magento_CSP muncul di Magento. Dia bertanggung jawab untuk Kebijakan Keamanan Konten, dan, pada kenyataannya, menambahkan header Content-Security-Policy , atau lebih tepatnya, sementara Content-Security-Policy-Report-Only . Seperti biasa, tepat waktu dan sangat diharapkan, ketika menaikkan versi "memperbaiki" :) Kami telah menulis tentang



apa itu Kebijakan Keamanan Konten dan apa yang dimakan di Habré .

Pilihan header Content-Security-Policy atau Content-Security-Policy-Report-Only tergantung pada file konfigurasi vendor / magento / module-csp / etc / config.xml secara terpisah untuk bagian depan secara terpisah untuk bagian admin.

<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>

Di tempat yang sama dalam arahan “report_uri” orang dapat mengatur URL untuk laporan, tetapi sejak itu tidak ada di sana, lalu chrome tanpa ampun memerah konsol dengan pesan tentang ketidakhadirannya.



Contoh teks kesalahan
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.

Bagaimana cara menambahkan url Anda ke kebijakan?


Buat file di root dari folder / etc / module dengan nama csp_whitelist.xml dan konten

<?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>

di mana POLICY_ID adalah salah satu dari:

  • default-src
  • script-src
  • object-src
  • style-src
  • img-src
  • media-src
  • frame-src
  • font-src
  • connect-src

VALUE_ID - nama unik
tipe TYPE - sembarang , dapat mengambil domain nilai atau hash
ALGORITHM - algoritma hashing (dengan TYPE = hash), misalnya sha256

Mari kita lihat contoh dari tes integrasi Magento sendiri :

<?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