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
Ga naar Instellingen () > Knowledge base site > Security.
Schakel om contentbeveiligingsbeleid in te schakelen.
Configureer de vereiste directivegroepen. Je kunt de volgende bronvelden vinden:
a. Codebeleid
b. Resource control
c. Embedding & Beveiliging
d. VerslaggevingKlik 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}}">

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 |
|---|---|---|
| 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. |
| Scriptbron | Specificeert welke domeinen JavaScript kunnen serveren op uw kennisbasis. Alleen scripts van vermelde bronnen worden door de browser uitgevoerd. |
| 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 |
|---|---|---|
| Afbeeldingsbron | Specificeert welke domeinen afbeeldingen mogen laden op je Knowledge Base-site. |
| Fontbron | Specificeert welke domeinen fontbestanden mogen leveren die door je kennisbank worden gebruikt. |
| Bron verbinden | Specificeert de domeinen waarnaar scripts kunnen verbinden bij API-aanroepen of netwerkverzoeken (bijv. fetch, XHR, WebSocket). |
| 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 |
|---|---|---|
| Framebron | Specificeert welke domeinen als frames of iframes binnen je kennisbank mogen worden ingebed (bijvoorbeeld YouTube, Vimeo of andere embeds). |
| Frame-voorouders | Geeft aan welke domeinen je Knowledge Base-pagina's in hun eigen frames mogen inbedden. Gebruik dit om ongeautoriseerde framing te voorkomen. |
| Vormactie | Geeft aan welke domeinen formulierinzendingen uit je kennisbank mogen worden verzonden. |
| Objectbron | Specificeert de domeinen die plug-in-inhoud mogen laden, zoals |
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 |
|---|---|---|
| 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. |
| 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-ancestorsCSP-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.
Toevoegen aan bron: https://www.youtube.com, https://player.vimeo.com
Dit zorgt ervoor dat embedded media correct geladen worden terwijl ongeautoriseerde iframe-inhoud wordt geblokkeerd.
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.
Voorbeeld van scriptbron: https://www.google-analytics.com, https://cdn.mixpanel.com
Voorbeeld van bron verbinden: https://api.mixpanel.com
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.
Bron: https://widget.intercom.io, https://js.intercomcdn.com
Verbind bron: https://api.intercom.io, https://nexus-websocket-a.intercom.io
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.
Bronstijl: https://fonts.googleapis.com
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
Open de ontwikkelaarstools van je browser (F12 of rechtsklik > Inspecteren).
Ga naar het tabblad Netwerk .
Bezoek je kennisbank en selecteer een willekeurig pageverzoek.
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 |
|
CSS of stylesheet |
|
Beeld- of volgpixel |
|
Lettertypebestand |
|
iframe-embed |
|
API-aanroep, fetch, XHR, WebSocket |
|
Webwerker of dienstwerker |
|
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.