Om de veiligheid maximaal te garanderen, vraagt het gebruik van de Mijn Burgerprofiel-extensie extra veiligheidsmaatregelen aan de gastwebsite die de global header afneemt.
Ga naar https://www.owasp.org/index.php/Main_Page (Open Web Mijn Burgerprofiel-headerlication Security Project®) voor meer informatie over de meestvoorkomende problemen rond veiligheid.
Single Sign-on via ACM
Via ACM met Single-Sign-on beschikken we vaak over een ID-token dat ook toegang geeft tot andere services. Dat ID-token moet altijd bewaard worden op de server. Bovendien blijft een sessie alleen geldig zo lang er gebruikersactiviteit is.
Content Security Policy
Het beveiligingsmodel van het web is gebaseerd op same-origin beleid.
Het gebruik van een widget, zoals de global header, heeft een impact op een content security policy omdat een widget altijd een cross-origin resource is.
Een Content Security Policy kan de browser echter wel informeren over welke bronnen (andere origins dus) betrouwbaar zijn. Bij de configuratie mogen de origins alleen een protocol, domain en optioneel een poort bevatten.
Enkele voorbeelden van geldige origins:
Ga voor meer informatie naar de volgende bronnen:
Voor elke App-ID moet er een global header geconfigureerd worden. Een global header kan dus maar één App-ID bevatten.
Minimumvereisten Testing & Integration-omgeving
Fetch Directive | Waarde | Beschrijving |
connect-src | wss://authenticatie-ti.vlaanderen.be |
|
connect-src | wss://tni.widgets.Burgerprofiel.dev-vlaanderen.be |
|
connect-src |
| |
connect-src | wss://tni.contactapi.uat-vlaanderen.be |
|
connect-src |
| |
connect-src |
| |
font-src |
| |
font-src |
| |
font-src |
| |
frame-src | 'self' | Alleen voor gastwebsites die een ACM-integratie hebben |
frame-src |
| |
frame-src |
| |
frame-src |
| |
frame-src |
| |
frame-src | Nodig door het gebruik van recaptcha binnen het Contact-menu | |
img-src | data: | Het Burgerprofiel maakt gebruik van dataprotocol om inline afbeeldingen te tonen |
img-src |
| |
img-src | https://tni.widgetconfigservice.Burgerprofiel.dev-vlaanderen.be |
|
style-src | 'unsafe-inline' | Nodig omdat de stylesheets voor een widget dynamisch geïnjecteerd worden |
script-src |
| |
script-src |
Google Analytics staat standaard uit. | |
script-src | 'unsafe-eval' | Nodig door de interne structuur van de Javascript loader die gebruikt wordt om de widget-afhankelijkheden te beheren en door de global namespace isolatie. |
worker-src |
|
Minimumvereisten Productie-omgeving
Fetch Directive | Waarde | Beschrijving |
connect-src | wss://authenticatie.vlaanderen.be |
|
connect-src | wss://prod.widgets.Burgerprofiel.vlaanderen.be |
|
connect-src |
| |
connect-src |
| |
connect-src |
| |
connect-src | wss://contactapi.vlaanderen.be |
|
connect-src |
| |
connect-src |
| |
font-src |
| |
font-src |
| |
font-src |
| |
frame-src | 'self' | Alleen voor gastwebsites die een ACM-integratie hebben |
frame-src |
| |
frame-src |
| |
frame-src |
| |
frame-src |
| |
frame-src |
| |
frame-src |
| |
frame-src | Nodig door het gebruik van recaptcha binnen het Contact-menu | |
img-src | data: | Het Burgerprofiel maakt gebruik van dataprotocol om inline afbeeldingen te tonen |
img-src |
| |
img-src | https://prod.widgetconfigservice.Burgerprofiel.vlaanderen.be |
|
style-src | 'unsafe-inline' | Nodig omdat de stylesheets voor een widget dynamisch geïnjecteerd worden |
script-src |
| |
script-src |
| |
script-src | 'unsafe-eval' | Nodig door de interne structuur van de Javascript loader die gebruikt wordt om de widget-afhankelijkheden te beheren en door de global namespace isolatie. |
worker-src |
|
script-src fetch directive met nonce-waarde
Een cryptografische nonce waarde zorgt ervoor dat alle script resources, geladen door een widget, automatisch vertrouwd worden. De server genereert bij elke aflevering van een Content Security Policy een unieke cryptografische nonce-waarde en voegt die toe aan de Content Security Policy.
Voorbeeld embed script met Content Security Policy nonce-waarde
<script src="https://prod.widgets.Burgerprofiel.vlaanderen.be/api/v1/widget/<id>/embed" nonce="nonce-<base64-waarde>"></script>
Het is niet meer mogelijk om bronnen expliciet te vermelden door het gebruik van nonce voor de script fetch directive. De browser verplicht een nonce-attribuut voor alle script tags die de juiste nonce-waarde bevat zoals beschreven in de Content Security Policy.
Voeg de "strict-dynamic" toe aan de script-src fetch directive om een script, dat al betrouwbaar is door gebruik van nonce, toe te staan nieuwe script tags toe te voegen zonder telkens een nonce attribuut te voorzien.
Herschrijf hiervoor de script-src fetch directive met de volgende waarden:
nonce-<base64-waarde>
'unsafe-inline'
'unsafe-eval'
'strict-dynamic'
https:
Meerdere waarden toevoegen zorgt ervoor dat het juiste fallback-gedrag wordt getriggered wanneer browsers zonder ondersteuning van niveau 3 de Content Security Policy uitlezen.
frame-ancestors navigatie directive
Naast het beschrijven van de bronnen die gastwebsite kan vertrouwen, kan ook worden bepaald welke domeinen de gastwebsite mogen embedden. Schakel embedden op andere websites wel uit en houd de waarde consistent met X-Frame-Options.
Houd er ook rekening mee dat X-Frame-Options geen wildcards en meerdere domeinen ondersteunt.
Als een gastwebsite ACM-integratie voorziet, voeg dan 'self' toe als toegestane frame-ancestors waarde. Zo kan de gastwebsite worden getoond vanuit een iframe tijdens het aanmeldproces.
Request/Response
Maatregel | Verplicht | Meer informatie |
HTTPS | Ja | Elke website die Mijn Burgerprofiel wil aanbieden, moet via https:// toegankelijk zijn. |
Cross-Origin Resource Sharing | Ja | Voorkomt dat externe bronnen requests sturen naar de applicatie. De applicatie moet de ondersteunde CORS zo strict mogelijk te configureren. Ga voor meer informatie naar: |
Content-Security-Policy | Ja | |
X-Frame-Options | Ja | Het gebruik van i-frames is ten strengste afgeraden. Zijn i-frames toch noodzakelijk, zorg dan voor een zo strict mogelijke instelling. Let op: Als de website ACM-ondersteuning biedt, moet de aanmeldpagina vanuit een iframe getoond worden vanop eigen domein. |
Strict-Transport-Security | Ja | Verwittigt de browser om HTTPS te forceren voor alle requests naar de back-end van de applicatie. Ga voor mee informatie naar: |
Cross-Site Request Forgery | Ja | Voorkomt cross-site request forgery door een uniek token te maken die elke request valideert. Ga voor meer informatie naar: |
X-Download-Options | Ja | Kies voor "noopen" om te voorkomen dat Internet Explorer gedownloade bestanden probeert uit te voeren binnen de context van de website. |
X-Content-Type-Options | Ja | Kies voor "nosniff" om te voorkomen dat een browser MIME types probeert te raden. |
X-Powered-By | Nee | Maak bij voorkeur geen informatie bekend over de infrastructuur of de applicatie. |
X-Robots-Tag | Nee | Vermeld bij voorkeur expliciet aan crawlers dat de inhoud van pagina's niet gecachet mag worden. Voor de meeste pagina's is authenticatie nodig. Bijgevolg zijn die al beschermd zijn door de sessiedetectie. |