Disclaimer: Dit artikel is gegenereerd door automatische vertaling.

Inhoudsbeveiligingsbeleid

Prev Next

Abonnementen die deze functie ondersteunen: Enterprise

Content Security Policy (CSP) is een door de browser geforceerd beveiligingsmechanisme dat bepaalt welke externe bronnen zoals scripts, stijlen, afbeeldingen, lettertypen, frames en meer op je Knowledge base site worden geladen. Wanneer CSP is ingeschakeld in Document360, wordt een contentbeveiligingsbeleid directive ingebed in de paginabron van je site, waarbij het laden van resources beperkt wordt tot alleen de domeinen die je expliciet configureert. Dit helpt je kennisbank te beschermen tegen veelvoorkomende webkwetsbaarheden zoals Cross-Site Scripting (XSS), clickjacking en data-injectieaanvallen.


Waarom je CSP nodig hebt

Zonder CSP kunnen browsers elke bron op je pagina laden — inclusief scripts, afbeeldingen en frames van domeinen die je niet van plan was toe te staan. Dit creëert openingen voor:

  • Cross-Site Scripting (XSS): Aanvallers die kwaadaardige scripts injecteren die sessietokens stelen of pagina-inhoud manipuleren.

  • Clickjacking: Je kennisbank is ingebed in een onzichtbaar iframe op een kwaadaardige site, waardoor gebruikers onbedoeld klikken krijgen.

  • Data-injectie: Ongeautoriseerde scripts van derden die stilletjes gebruikersgegevens of analyses exfiltreren.

CSP stelt je in staat een toelaatlijst van vertrouwde domeinen voor elk resourcetype te definiëren. De browser handhaaft dit automatisch, er is geen wijziging in je applicatiecode nodig.

Wanneer CSP gebruiken?

CSP is het meest waardevol wanneer je kennisbank derdepartijcontent (video's, chatwidgets, analytics) bevat, aangepaste HTML of inline scripts gebruikt, wordt ingezet in een compliance-gevoelige of enterprise-omgeving, of beschermd moet worden tegen frames door externe sites.


Hoe CSP werkt in Document360

Document360 implementeert CSP via een meta-element dat is ingebed in de broncode van je site, in plaats van via een HTTP-responsheader. Dit betekent:

  • Alle CSP-regels worden op paginaniveau toegepast via een <meta http-equiv="Content-Security-Policy"> tag.

  • Als je CSP valideert door de HTTP-responsheader te inspecteren, lijkt deze afwezig en is dit verwacht gedrag.

  • Om te bevestigen dat CSP actief is, klik je met de rechtermuisknop op je Knowledge Base-site, selecteer je pagina bron bekijken en zoek je op "Content-Security-Policy".

Waarom de meta-elementen-benadering?

HTTP-responsheaders vereisen server-side configuratie. Document360 gebruikt een meta-element zodat je CSP volledig vanuit de instellingen-UI kunt configureren zonder enige infrastructurele wijzigingen. De beveiligingsbescherming is gelijk voor de overgrote meerderheid van de directives, met uitzondering van frame-ancestors, die alleen via HTTP-headers in sommige browsers worden ondersteund. Document360 regelt dit automatisch.


Contentbeveiligingsbeleid inschakelen

  1. Ga naar Instellingen () > Knowledge base site > Security.

  2. Schakel om contentbeveiligingsbeleid in te schakelen.

  3. Configureer de vereiste directivegroepen. Je kunt de volgende bronvelden vinden:
    a. Codebeleid
    b. Resource control
    c. Embedding & Beveiliging
    d. Verslaggeving

  4. Klik op Opslaan.

OPMERKING

Wanneer CSP is ingeschakeld, zorg er dan voor dat de tijdelijke placeholder voor het nonce-attribuut aan alle aangepaste HTML-scriptsecties wordt toegevoegd. Voorbeeld:

<script nonce="{{Document360-Nonce}}">

Settings page for configuring security policies in a knowledge base application.

OPMERKING

  • De tekenlimiet voor elk veld is 5000.

  • Gebruik komma's (,) om meerdere domeinen te scheiden.

  • Houd de URL's in het volgende formaat: https://example.com.

  • Bestaande CSP-configuraties blijven behouden bij het aan- en uitzetten van CSP.


CSP-richtlijngroepen

De CSP-instellingen zijn georganiseerd in vier logische groepen. Elke groep bevat specifieke richtlijnen die verschillende resourcetypes aansturen. Alle velden accepteren komma-gescheiden domein-URL's in het formaat  https://example.com.

1. Codebeleid

Deze groep regelt de bronnen waaruit code en stylingbronnen worden geladen. Het vormt de basis van je CSP-configuratie; de Default source directive fungeert als een fallback voor elk resourcetype dat geen specifiekere regel heeft gedefinieerd.

Richtlijn

Veldnaam

Beschrijving

default-src

Standaardbron

Definieert fallback-toegestane domeinen voor alle resourcetypes die niet onder een specifiekere richtlijn vallen. Een veelvoorkomende startwaarde is 'self', wat alle niet-vermelde resourcetypen beperkt tot je eigen domein.

script-src

Scriptbron

Specificeert welke domeinen JavaScript kunnen serveren op uw kennisbasis. Alleen scripts van vermelde bronnen worden door de browser uitgevoerd.

style-src

Stijlbron

Specificeert welke domeinen stylesheets en CSS kunnen bieden. Voorkomt dat kwaadaardige stijlen worden geïnjecteerd.


2. Resource control

Deze groep bepaalt welke externe domeinen media en databronnen zoals afbeeldingen, lettertypen, API-aanroepen en scripts van achtergrondwerkers op uw Knowledge Base-site mogen leveren.

Richtlijn

Veldnaam

Beschrijving

img-src

Afbeeldingsbron

Specificeert welke domeinen afbeeldingen mogen laden op je Knowledge Base-site.

font-src

Fontbron

Specificeert welke domeinen fontbestanden mogen leveren die door je kennisbank worden gebruikt.

connect-src

Bron verbinden

Specificeert de domeinen waarnaar scripts kunnen verbinden bij API-aanroepen of netwerkverzoeken (bijv. fetch, XHR, WebSocket).

worker-src

Werkwijzerbron

Specificeert welke domeinen achtergrondworker-scripts mogen laden die door je kennisbank worden gebruikt.


3. Embedding & Beveiliging

Deze groep bepaalt hoe je kennisbank externe inhoud inbedden en hoe deze zelf op andere websites kan worden ingebed. Het is vooral belangrijk om clickjacking-aanvallen te voorkomen en om derde-partijcontent zoals video's, widgets en portalen te beheren.

Richtlijn

Veldnaam

Beschrijving

frame-src

Framebron

Specificeert welke domeinen als frames of iframes binnen je kennisbank mogen worden ingebed (bijvoorbeeld YouTube, Vimeo of andere embeds).

frame-ancestors

Frame-voorouders

Geeft aan welke domeinen je Knowledge Base-pagina's in hun eigen frames mogen inbedden. Gebruik dit om ongeautoriseerde framing te voorkomen.

form-action

Vormactie

Geeft aan welke domeinen formulierinzendingen uit je kennisbank mogen worden verzonden.

object-src

Objectbron

Specificeert de domeinen die plug-in-inhoud mogen laden, zoals <object> of <embed> elementen. Stel in op 'none' indien niet vereist.


4. Rapportage

De Rapportage-groep stelt u in staat uw CSP in de praktijk te monitoren door browsers te instrueren om overtredingrapporten naar een aangewezen eindpunt te sturen telkens wanneer een bron door uw beleid wordt geblokkeerd. Dit is essentieel om verkeerde configuraties en potentiële aanvalpogingen te identificeren zonder uw site te verstoren.

Richtlijn

Veldnaam

Beschrijving

report-endpoint

Rapporteer eindpunt

Specificeert de URL waar browsers rapporten naartoe moeten sturen wanneer bronnen door je CSP worden geblokkeerd. Voer één of meer komma-gescheiden rapport-endpoint-URL's in.

report-to

Rapporteer aan

Specificeert de naam van de rapportagegroep die door de browser wordt gebruikt om CSP-overtredingsrapporten te verzenden. Dit moet overeenkomen met een rapportagegroep die is gedefinieerd in de rapportageconfiguratie van uw site.

OPMERKING

Zorg ervoor dat de endpoint-URL's die in de Rapportagevelden zijn ingevoerd geldig en publiek bereikbaar zijn voordat je opslaat. Het meldpunt moet ook POST-verzoeken accepteren en reageren met een 2xx-statuscode.


X-Frame-bescherming

De X-Frame-beschermingsoptie is beschikbaar naast CSP-instellingen op de Beveiligingspagina. Wanneer ingeschakeld, voegt deze een X-Frame-Options: SAMEORIGIN responsheader toe aan je Knowledge Base-pagina's, waardoor ze niet in een iframe op een extern domein worden geladen.

Dit biedt clickjacking-bescherming voor browsers en tools die HTTP-headers verwerken in plaats van meta-tag CSP. Het is een eenvoudigere, grovere controle dan frame-ancestors. Het staat niet toe om specifieke vertrouwde domeinen toe te staan

X-Frame-bescherming

Frame-voorouders (CSP)

Blokkeert alle externe framing (alleen SAMEORIGIN)

Hiermee kun je een lijst van vertrouwde domeinen specificeren

Geleverd via HTTP-responsheader

Geleverd via een meta-element in de paginabron

Eenvoudiger te configureren - één schakelaar

Flexibeler - precieze controle per domein

Geen uitzonderingen toegestaan

Uitzonderingen kunnen expliciet worden vermeld

OPMERKING

X-Frame Options en de frame-ancestors CSP-richtlijn regelen beide het gedrag van frame embedding. Als je beide configureert, zorg dan dat ze consistent zijn om conflicterende regels te voorkomen.

Schakel bijvoorbeeld X-Frame Protection niet in terwijl je ook een extern domein toevoegt aan frame-ancestors - de X-Frame-header overschrijft de CSP-richtlijn in browsers die beide ondersteunen.


Gebruiksscenario's voor contentbeveiligingsbeleid

Ingebedde video's

Als je artikelen video's van YouTube of Vimeo bevatten, gebruik dan de Frame source-richtlijn om alleen die vertrouwde domeinen toe te staan.

Externe analysetools en feedbacktools

Als je kennisbank Google Analytics, Mixpanel of een feedbackwidget gebruikt, voeg dan hun script- en dataverzamelingsdomeinen toe aan Script source en Connect source.

Live chat-widgets

Chatwidgets zoals Intercom of Zendesk hebben meestal permissies nodig over meerdere directives omdat ze scripts laden, API-aanroepen uitvoeren en hun eigen UI bedienen.

Aangepaste lettertypen

Google Fonts en Adobe Typekit laden vanuit twee verschillende domeinen - één voor het stylesheet en één voor de daadwerkelijke lettertypebestanden. Beide moeten worden vermeld.

Integreer je kennisbank in een klantportaal

Als je je kennisbank binnen een iframe binnen je eigen product of SaaS-applicatie moet weergeven, gebruik dan de Frame-voorloperrichtlijn om dat specifieke domein toe te staan.

  • Voorbeeld van frame-voorouders: https://app.yourcompany.com

  • Frame-voorouders instellen op 'geen' blokkeert alle externe framing. Verander dit alleen als je een legitieme embedding-vereiste hebt.

Aangepaste HTML en inline scripts

Als je artikelen of thema aangepaste HTML-secties met inline <script> tags bevatten, worden die scripts geblokkeerd door een strikte CSP, tenzij ze een nonce-attribuut bevatten. Gebruik de Document360 nonce-placeholder:

<script nonce="{{Document360-Nonce}}"> 

  // Your custom inline script 

</script> 

De {{Document360-Nonce}} tijdelijke vervanger wordt bij het renderen vervangen door een unieke waarde per verzoek die overeenkomt met de nonce die in de CSP wordt vermeld. Dit maakt het mogelijk dat het vertrouwde inline script kan draaien zonder dat je beleid hoeft te verzwakken met 'unsafe-inline'.

Compliance- en beveiligingsgeharde omgevingen

Teams die werken onder frameworks zoals SOC 2, ISO 27001 of HIPAA vereisen vaak een gedocumenteerd resource-loading beleid. CSP biedt een door machines gehandhaafde versie van dat beleid. De rapportagerichtlijnen geven je bovendien een auditspoor van pogingen tot beleidsovertredingen.


Best practices

Begin met een beperkende standaardinstelling

Stel Default source eerst in op 'zelf'. Dit creëert een veilige basislijn; alleen bronnen uit je eigen domein zijn toegestaan tenzij expliciet elders toegestaan. Voeg specifieke domeinen toe in de beoogde velden in plaats van de Default source te verbreden.

Gebruik specifieke richtlijnen in plaats van brede toestemmingslijsten

In plaats van veel domeinen toe te voegen aan Default source, gebruik je de gerichte velden: Script source, Frame source, Connect source, enzovoort. Dit maakt het beleid makkelijker te onderhouden en vermindert accidentele overexposure.

Vermijd jokers

Gebruik *. example.com staat elk subdomein van dat domein toe, inclusief subdomeinen die je niet beheert of die mogelijk gecompromitteerd zijn. Gebruik alleen wildcard-subdomeinen als je alle subdomeinen van dat domein bezit en geen alternatief hebt. Gebruik nooit een bare (allow all) in welke richtlijn dan ook.

Gebruik rapportage voordat je het handhaven

Configureer eerst het Rapport-eindpunt zodat je geblokkeerde bronnen kunt monitoren voordat het beleid je lezers raakt. Bekijk overtredingen gedurende meerdere dagen of weken voordat je het beleid aanscherpt.

Gebruik nonce voor aangepaste inline scripts

Gebruik altijd de {{Document360-Nonce}} tijdelijke scripts in aangepaste HTML-scriptsecties. Dit maakt het mogelijk om betrouwbare inline scripts veilig te draaien zonder 'unsafe-inline' te gebruiken, wat je hele scriptbeleid zou ondermijnen.

Houd de frame-instellingen uitgelijnd

Als X-Frame Protection en frame-ancestors beide zijn geconfigureerd, zorg er dan voor dat ze hetzelfde bedoelde gedrag volgen. Verkeerd uitgelijnde instellingen kunnen onverwachte iframe-blokkering veroorzaken of framing mogelijk maken wanneer je dat wilde blokkeren.

Kwartaalherziening

Tools van derden veranderen CDN-domeinen in de loop van de tijd. Bekijk je CSP-instellingen opnieuw na elke integratiewijziging en op een regelmatig schema (minimaal elk kwartaal) om wijzigingen te ontdekken die mogelijk stilletjes embedded content hebben gebroken.


Je contentbeveiligingsbeleid testen

Controleer na het configureren en opslaan van je CSP-instellingen of het beleid werkt zoals verwacht met een van de volgende methoden.

Methode 1: Via pagina bron

  • Open je Knowledge Base-site in een browser.

  • Klik met de rechtermuisknop ergens op de pagina en selecteer Pagina Broncode weergeven.

  • Gebruik Ctrl+F (Windows) of Cmd+F (Mac) en zoek op "Content-Security-Policy".

  • Als deze wordt gevonden, verschijnt de volledige CSP-configuratie naast deze term, waarmee wordt bevestigd dat deze actief is.

Methode 2: Via Browser Developer Tools

  1. Open de ontwikkelaarstools van je browser (F12 of rechtsklik > Inspecteren).

  2. Ga naar het tabblad Netwerk .

  3. Bezoek je kennisbank en selecteer een willekeurig pageverzoek.

  4. Bekijk de HTML-pagina op de CSP-metatag.

Methode 3: via online tools

Je kunt ook externe tools zoals securityheaders.com gebruiken om de beveiligingsconfiguratie van je site te analyseren. Houd er rekening mee dat omdat Document360 een meta-element gebruikt in plaats van een response header, sommige tools CSP als afwezig op headerniveau kunnen rapporteren, wat te verwachten is.


Probleemoplossing

Stap 1: Lees de fout in de browserconsole

Wanneer CSP een resource blokkeert, registreert de browser een specifieke fout in de ontwikkelaarsconsole (F12 > Console-tabblad). De foutmelding vertelt je precies wat er is geblokkeerd en welke richtlijn is geschonden.

Bijvoorbeeld: Weigerde het script 'https://cdn.example.com/widget.js' te laden omdat het de volgende CSP-richtlijn schendt: "script-src 'self'". Deze foutmelding zegt dat je https://cdn.example.com moet toevoegen aan het Scriptbronveld. Lees het domein uit het foutbericht en voeg het toe aan het bijbehorende directiveveld in de instellingen van Document360.

Stap 2: Identificeer de juiste richtlijn

Koppel het resourcetype in de consolefout aan het juiste instructieveld:

Grondstoftype

Domein toevoegen aan

JavaScript-bestand

script-src

CSS of stylesheet

style-src

Beeld- of volgpixel

img-src

Lettertypebestand

font-src

iframe-embed

frame-src

API-aanroep, fetch, XHR, WebSocket

connect-src

Webwerker of dienstwerker

worker-src

Veelvoorkomende problemen

De video toont in het ene artikel als 'Deze inhoud is geblokkeerd', maar niet in een ander

Het domein dat de video bedient staat niet in je Frame source allowlist, of het domein verschilt tussen embedtypes (bijvoorbeeld https://www.youtube.com voor standaard embeds versus https://www.youtube-nocookie.com voor privacy-enhanced embeds). Voeg beide toe aan Frame source.

Aangepast lettertype wordt verkeerd weergegeven of valt terug op systeemlettertype

Lettertypeleveranciers gebruiken doorgaans twee verschillende domeinen - één voor het CSS-stijlblad en één voor de daadwerkelijke lettertypebestanden. Beide moeten worden vermeld. Voor Google Fonts voegt u https://fonts.googleapis.com toe aan Stijlbron en https://fonts.gstatic.com aan Lettertypebron.

Chatwidget laadt maar werkt niet

Chatwidgets laden vaak scripts, voeren API-aanroepen uit en laden afbeeldingen van meerdere domeinen. Controleer de browserconsole op alle geblokkeerde verzoeken – er kunnen er meerdere zijn. Voeg alle benodigde domeinen toe aan de juiste richtlijnvelden (Script source, Connect source, Image source).

Formulierindiening is geblokkeerd

Als een formulier in je kennisbank wordt ingediend bij een externe dienst, voeg dan het domein van die dienst toe aan het formulieractieveld.

Overtredingrapporten komen niet aan bij het Rapporteer-eindpunt

Controleer dat:

  • De endpoint-URL is openbaar bereikbaar (niet achter een VPN of firewall).

  • Het eindpunt accepteert POST-verzoeken en geeft een 2xx-antwoord terug.

  • Het eindpunt ondersteunt het Content-Type: application/csp-report request-formaat.

  • Als je de Report to-richtlijn gebruikt, is de benoemde rapportagegroep correct geconfigureerd in je infrastructuur.

De CSP-validatietool meldt CSP als ontbrekend

Document360 implementeert CSP via een meta-element in de paginabron, niet via een HTTP-responsheader. Tools die alleen responsheaders controleren, rapporteren CSP als ontbrekend. Om te bevestigen dat CSP is ingeschakeld, bekijk de paginabron en zoek op Content-Security-Policy.

Browserverschillen

De meeste moderne browsers (Chrome, Firefox, Edge, Safari) ondersteunen het CSP-meta-element. Bekende verschillen om op de hoogte te zijn:

  • frame-ancestors wordt genegeerd wanneer het via een meta-element wordt geleverd in sommige oudere browserversies. Als frame embedding-bescherming cruciaal is, schakel dan ook X-Frame Protection in.

  • Safari kan sommige CSP-richtlijnen anders afhandelen dan Chrome en Firefox. Test je configuratie in Safari als je gebruikers op Apple-apparaten zitten.

  • Zeer oude browsers (Internet Explorer 11 en lager) ondersteunen CSP niet. Als je IE11-gebruikers hebt, wordt CSP stilletjes genegeerd.

OPMERKING

Private Knowledge Base-projecten kunnen niet in iframes worden ingebed. Authenticatiecookies worden niet correct ingesteld binnen iframes, wat herhaalde inlogpogingen en doorleidingsfouten veroorzaakt. Als je de Knowledge Base in een andere applicatie moet inbedden, gebruik dan een Knowledge base widget .


FAQ

Waarom zegt mijn CSP-validatietool dat CSP ontbreekt in de responsheader?

Document360 implementeert CSP via een meta-element in de paginabron, niet via een HTTP-responsheader. Tools die alleen responsheaders controleren, rapporteren daarom CSP als ontbrekend. Om te bevestigen dat CSP is ingeschakeld, klik met de rechtermuisknop op je Knowledge Base-site, selecteer View page source en zoek op "Content-Security-Policy". Als de term voorkomt, is CSP actief.

Kan ik specifieke domeinen toestaan om mijn kennisbank in te betten?

Ja. Gebruik de Frame ancestors-richtlijn onder de Embedding & Security groep om aan te geven welke externe domeinen je Knowledge Base-pagina's in hun eigen frames mogen inbedden.

Wat is het verschil tussen frame-src en frame-voorouders?

Deze twee richtlijnen bepalen tegenovergestelde richtingen van het inbedden:

  • frame-src bepaalt welke externe domeinen je kennisbank mag inbedden (bijvoorbeeld een YouTube-video in een artikel).

  • frame-ancestors bepaalt welke externe domeinen je kennisbasis in hun eigen pagina's mogen inbedden.

Hoe gebruik ik de rapportage-instructies?

Voer de URL van je rapportage-endpoint in het veld Rapporteer-endpoint. Wanneer een browser een resource blokkeert, stuurt hij een JSON-rapport naar deze URL. Rapporteer om samen met Rapporteer-endpoint te werken en specificeer een benoemde rapportagegroep die vooraf is geconfigureerd in de rapportage-infrastructuur van je site, nuttig voor enterprise-setups met gecentraliseerde beveiligingsmonitoring.

Wat gebeurt er als ik CSP uitschakel nadat ik het eerder heb geconfigureerd?

Het uitschakelen van de Content-beveiligingsbeleid-schakelaar verwijdert de handhaving van CSP van je Knowledge Base-site. Je opgeslagen directive-configuraties blijven echter behouden en worden opnieuw toegepast als je CSP opnieuw inschakelt. Er gaat geen configuratiegegevens verloren bij het uitschakelen van de functie.

Wat moet ik toevoegen aan het veld Standaard bron?

Begin met 'self' 'zelf', wat alle niet-vermelde resourcetypes beperkt tot je eigen domein. Voeg vervolgens specifieke domeinen toe in de meer gerichte velden (Scriptbron, Afbeeldingsbron, enz.) in plaats van de standaardbron te verbreden. Een beperkende standaardbron met gedetailleerde uitzonderingen is veiliger en makkelijker te auditen dan een brede standaardbron.

Wat is een CSP-overtredingrapport en hoe ziet het eruit?

Wanneer een browser een resource blokkeert, stuurt hij een JSON-payload naar je Report-endpoint. Een typisch rapport ziet er als volgt uit:

{ 
"csp-report": 
{"document-uri": "https://docs.yourcompany.com/article", 
"violated-directive": "script-src 'self'", 
"blocked-uri": "https://cdn.example.com/widget.js", 
"original-policy": "default-src 'self'; script-src 'self'"} 
} 

Het geblokkeerde-uri-veld geeft je precies het domein aan dat je aan je toestemmingslijst moet toevoegen. Het geschonden-directive-veld vertelt je welk directieveld je moet bijwerken in de Document360-instellingen.