Beveiligingsbeleid voor inhoud
Het Beveiligingsbeleid voor inhoud (CSP) wordt als een header naar de browser van uw gebruikers verzonden door uw webserver. Het wordt gebruikt om aan te geven welke dynamische resources mogen worden geladen op uw pagina.
Voor veel websites betekent dit vaak dat moet worden aangegeven dat alleen scripts en stijlen van uw eigen domein en die van alle tools die u gebruikt, zijn toegestaan. Dit kan echter problematischer worden wanneer complexere configuraties in het geding zijn.
Als u CSP-fouten op uw site identificeert die vergelijkbaar zijn met de onderstaande, dan zal uw ontwikkelingsteam of hostingprovider uw CSP-instellingen moeten aanpassen.
Uw CSP-instellingen aanpassen
1. Controleer op CSP-fouten.
Als u problemen ondervindt met statistieken en toestemmingen in de Axeptio-backend, kan dit soms worden veroorzaakt door een CSP-fout. U kunt deze fouten controleren in de ontwikkelaarsconsole van uw browser. U kunt leren hoe u de console opent door de stappen in deze gids te volgen.
Als er een probleem is met het Beveiligingsbeleid voor inhoud, ziet u een fout die vergelijkbaar is met de onderstaande:
2. Raadpleeg uw webontwikkelaar of hostingprovider om de CSP-instellingen aan te passen.
Omdat elke server anders is, kan het Axeptio-ondersteuningsteam deze problemen niet helpen oplossen verder dan het identificeren van een CSP-fout. Bij het wijzigen van uw Beveiligingsbeleid voor inhoud is de beste persoon om contact mee op te nemen uw webontwikkelaar, of degene die uw website beheert.
3. Kies welke CSP-instellingen u wilt aanpassen.
Als u een standaard CSP gebruikt, dan zal het volgende toevoegen aan uw default-src regels voldoende zijn.
De "..." in de onderstaande voorbeelden zijn placeholders voor alle bestaande regels die u mogelijk hebt ingesteld:
default-src ... https://.axept.io https://.axeptio.eu https://axeptio.imgix.net https://*.gstatic.com 'unsafe-inline'
Als u strengere beperkingen wilt, raden wij het onderstaande model aan om ervoor te zorgen dat uw beleid in de toekomst beter bestand is tegen het moment waarop we onze services uitbreiden. Hier is een voorbeeld van hoe dit eruit zou kunnen zien:
default-src … 'unsafe-inline'
script-src … https://*.axept.io 'unsafe-inline'
connect-src … https://*.axept.io https://*.axeptio.eu https://*.axeptio.tech
img-src … https://axeptio.imgix.net https://*.axept.io https://*.gstatic.com
media-src … https://axeptio-videos.imgix.net
font-src … https://fonts.axept.io
Als uw CSP meer granulariteit vereist, dan volgen hier de absolute minimale beveiligingsmachtigingen die u aan uw webserver moet toevoegen om Axeptio correct op uw site te laten functioneren:
script-src … https://static.axept.io 'unsafe-inline'
connect-src … https://*.axept.io https://*.axeptio.eu https://*.axeptio.tech
img-src … https://axeptio.imgix.net https://favicons.axept.io https://*.gstatic.com
media-src … https://axeptio-video.imgix.net
font-src … https://fonts.axept.io
Het gebruik van een nonce
Om uw website tegen onverwachte code-uitvoering te beschermen, kunt u op het Nonce-attribuut vertrouwen om code-uitvoering alleen aan geautoriseerde scripts te identificeren en beperken. Dit voorkomt dat schadelijke code wordt uitgevoerd. De integratie van de Axeptio-widget ondersteunt het Nonce-attribuut en kan eenvoudig worden geconfigureerd met behulp van de integratiecode.
Configureer uw nonce-ID in de HTTP-header van de pagina's van uw website en hergebruik het als attribuut voor elk script dat op de pagina wordt uitgevoerd.
<?php
$nonce = base64_encode(random_bytes(18));
header("Content-Security-Policy: default-src 'self'; script-src 'strict-dynamic' 'nonce-" . $nonce . "' https:");
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<title>CSP Nonce</title>
<script type="text/javascript" nonce="<?= $nonce ?>" src="..."></script>
</head>
<body>
<script type="text/javascript" nonce="<?= $nonce ?>">
myFunction();
</script>
</body>
</html>
2. De Axeptio-widget is een script dat op uw website wordt geladen. U hoeft alleen het gegenereerde nonce-attribuut aan het integratiescript toe te voegen en het aan een speciaal axeptioSettings-attribuut te koppelen, dat verantwoordelijk is voor het doorgeven van de nonce-waarde aan alle componenten die door de Axeptio-widget worden beheerd.
<!-- Integreer uw JS-script hier -->
<script nonce=$nonce>
window.axeptioSettings = {
clientId: "axeptio-client-id",
cookiesVersion: "axeptio--cookie-version",
nonce: $nonce
};
(function(d, s) {
var t = d.getElementsByTagName(s)[0], e = d.createElement(s);
e.async = true;
e.src = "https://static.axept.io/sdk.js";
t.parentNode.insertBefore(e, t);
})(document, "script");
</script>
Vanaf nu wordt alle inline HTML-inhoud die door de Axeptio-widget is gegenereerd, gevalideerd via het nonce-attribuut en triggert niet langer een unsafe-inline-fout.
