Johdanto
Finnassa on (21.9.2021 tilanteen mukaan tulossa käyttöön) Content Security Policy (CSP), joka määrittää, mitä skriptejä ja ulkoisia sisältöjä selain suostuu lataamaan. Näiden sääntöjen tarkoituksena on ehkäistä mahdollisten haavoittuvuuksien (esim. XSS) hyödyntämismahdollisuuksia. Tämän seurauksena mitä tahansa skriptiä ei sallita suoritettavaksi eikä esim. iframe:a voi ladata mistä vain.
Finnan CSP määritellään contentsecuritypolicy.ini-tiedostossa. Tiedostoa on mahdollista muokata paikallisesti tarpeen mukaan omia lisäyksiä varten. Muokkauksessa on kuitenkin oltava huolellinen, eikä liian laajoja oikeuksia tule sallia.
Content Security Policy -sääntöjen määrittäminen
Finnassa on oletuksena melko tiukat säännöt, jotka sallivat lähinnä sellaisten skriptien lataamisen, joissa script-tagissa on oikea nonce. Näitä sääntöjä voi laajentaa omilla säännöillä local/config/vufind/contentsecuritypolicy.ini
-tiedostossa. Pohjaksi kannattaa kopioida contentsecuritypolicy.ini.sample
-tiedosto, joka sisältää esimerkkisääntöjä useille chat-palveluille ym. ulkoisille lähteille.
Sääntöjen toiminnan varmistaminen
21.9.2021 tilanteen mukaisesti CSP on vasta raportointitilassa, jolloin se ei estä skriptejä ym. sisältöä latautumasta, vaan raportoi vain ongelmista.
Ainakin Chrome- ja Firefox-selaimilla voi selaimen kehittäjän työkaluihin kuuluvalla konsolilla tms. työkalulla nähdä mahdolliset virheilmoitukset.
Huom! Keltaisella näkyvistä varoituksista ei tarvitse huolestua. Esim. seuraava ilmoitus kertoo vain, että selain jättää huomiotta sääntöjä, jotka on sisällytetty vanhempia selaimia varten:
Seuraavassa kuvassa on esimerkki-ilmoitus siitä, että skripti ei saa ladattua toista skriptiä:
Lisätietoa aiheesta
https://vufind.org/wiki/administration:security:content_security_policy (VuFindin ohje)
https://content-security-policy.com/
https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy