Magento 2 Content-Security-Policy Del 2

Som nævnt i en tidligere post beder Magento 2 ikke som standard en brugers browser om at begrænse eksterne elementer. Der logges istedet direkte til browserens console. Dette kan være fint for en udvikler, som debugger på en given opgave. Bemærk den manglende Report-To i defaut headeren:

HTTP/1.1 200 OK
Date: Fri, 12 Jun 2020 09:01:02 GMT
Server: Apache
Pragma: no-cache
Cache-Control: max-age=0, must-revalidate, no-cache, no-store
Expires: Wed, 12 Jun 2019 09:01:07 GMT
Content-Security-Policy-Report-Only: font-src 'self' 'unsafe-inline'; form-action geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com secure.authorize.net test.authorize.net 'self' 'unsafe-inline'; frame-ancestors 'self' 'unsafe-inline'; frame-src geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com secure.authorize.net test.authorize.net 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 geostag.cardinalcommerce.com 1eafstag.cardinalcommerce.com geoapi.cardinalcommerce.com 1eafapi.cardinalcommerce.com songbird.cardinalcommerce.com includestest.ccdc02.com www.googleadservices.com www.google-analytics.com secure.authorize.net test.authorize.net www.paypal.com www.sandbox.paypal.com www.paypalobjects.com t.paypal.com s.ytimg.com video.google.com vimeo.com www.vimeo.com js.authorize.net jstest.authorize.net js.braintreegateway.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';
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Vary: Host
Content-Length: 26463
X-Served-By: Apache, dev.magepartner.net, ipv4: 185.31.76.70 ipv6: 2a00:b920:2:1337::70, vhost = csp.dev
X-UA-Compatible: IE=edge
X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, noodp, notranslate, noimageindex
Content-Type: text/html; charset=UTF-8

Ønsker man istedet en grafisk visning med historik findes der flere services. En af de mest brugte hedder report-uri.com og kan med visse begrænsninger benyttes gratis. Med udgangpunkt i /vendor/magento/module-csp/etc/ kan i i config.xml sætte visse parametre. Heriblandt report_uri:

<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>
<report_uri>https://powrcsp.report-uri.com/r/d/csp/powr-test</report_uri>
</storefront>
<admin>
<report_only>1</report_only>
<report_uri>https://powrcsp.report-uri.com/r/d/csp/powr-test</report_uri>
</admin>
</mode>



Dette fortæller browserne, at de skal rapportere data direkte til API’et , som i dette tilfælde ligger på https://powrcsp.report-uri.com/r/d/csp/powr-test. På report-uri.com kan man så opsætte et hav af forskellige filtre, tilpasset netop det website man arbejder med.

Headeren som browserne får retur efter ovenstående er tilføjet config.xml vil se ud som herunder og her bemærkes især, at der nu fremkommer en Report-To:

HTTP/1.1 200 OK
Date: Fri, 12 Jun 2020 09:36:16 GMT
Server: Apache
Pragma: no-cache
Cache-Control: max-age=0, must-revalidate, no-cache, no-store
Expires: Wed, 12 Jun 2019 09:36:17 GMT
Report-To: {"group":"report-endpoint","max_age":10886400,"endpoints":[{"url":"https:\/\/powrcsp.report-uri.com\/r\/d\/csp\/reportOnly"}]}
Content-Security-Policy-Report-Only: font-src 'self' 'unsafe-inline'; form-action geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com secure.authorize.net test.authorize.net 'self' 'unsafe-inline'; frame-ancestors 'self' 'unsafe-inline'; frame-src geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com secure.authorize.net test.authorize.net 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 geostag.cardinalcommerce.com 1eafstag.cardinalcommerce.com geoapi.cardinalcommerce.com 1eafapi.cardinalcommerce.com songbird.cardinalcommerce.com includestest.ccdc02.com www.googleadservices.com www.google-analytics.com secure.authorize.net test.authorize.net www.paypal.com www.sandbox.paypal.com www.paypalobjects.com t.paypal.com s.ytimg.com video.google.com vimeo.com www.vimeo.com js.authorize.net jstest.authorize.net js.braintreegateway.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'; report-uri https://powrcsp.report-uri.com/r/d/csp/reportOnly; report-to report-endpoint;
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Vary: Host
Content-Length: 26463
X-Served-By: Apache, dev.magepartner.net, ipv4: 185.31.76.70 ipv6: 2a00:b920:2:1337::70, vhost = csp.dev
X-UA-Compatible: IE=edge
X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, noodp, notranslate, noimageindex
Content-Type: text/html; charset=UTF-8

Når man er tilfreds med den data man modtager og forventer, at være klar til at blokere indhold fra alle ikke-whitelistede domæner/resourcer kan man aktivere enforce af csp-reglerne. Dette foregår også i config.xml og ser ud som flg.:

<mode>
<storefront>
<report_only>1</report_only>
</storefront>
<admin>
<report_only>1</report_only>
</admin>
</mode>

Her ser vi report-only er = 1 og altså aktivt. Ændres dette til 0 vil Magentoen bede browsere blokere alt ikke whitelistet indhold. En hurtig curl af sitet afslører, at CSP nu er aktivt og Content-Security-Policy-Report-Only vil istedet blot fremstå som Content-Security-Policy.

Om forfatter

Relaterede artikler

Nyhedsbrev... Privat, sikkert og spam-fri.