Polisa bezbednosti sadržaja (engl. Content Security Policy) je standard računarske bezbednosti uveden da bi se sprečilo umetanje skriptova (engl. Cross-site scripting, XSS), clickjacking i drugi napadi ubrizgavanja koda (engl. code injection) koji proizilaze iz izvršavanja zlonamernog sadržaja u okviru pouzdane veb-stranice. To je glavna preporuka od strane W3C grupe za bezbednost veb-aplikacija, široko podržana od strane modernih veb-pregledača. Polisa bezbednosti sadržaja daje standardni metod vlasnicima veb-sajtova da se izjasne o dozvoljenom poreklu sadržaja za koji bi pregledačima bilo dozvoljeno da učitaju na taj veb-sajt — pokriveni tipovi su JavaScript, CSS, HTML okviri, veb vorkeri, Veb-tipografija, slike, ugnježdeni objekti kao što su Java apleti, ActiveX, audio i video fajlovi, i druga HTML5 svojstva.

Status Standard, originalno nazvan "Ograničenja sadržaja", bio je predložen od strane Roberta Hansena u 2004. godini, i prvi put realizovan u Firefox 4 i vrlo brzo usvojen i od strane ostalih pregledača. Prva verzija ovog standarda objavljena je 2012. godine kao glavna preporuka od strane W3C a ubrzo je objavljena i verzija drugog nivoa 2014. godine. nacrt nivoa 3 se razvija sa novim karakteristikama koje bi bile brzo usvojene od strane veb-pregledača.

Naredni nazivi zaglavlja se koriste kao deo eksperimenalne implementacije Polise bezbednosti sadržaja (CSP):

Content-Security-Policy — standardno ime zaglavlja, predloženo iz W3C dokumenta. Google Chrome podržava ovo od svoje verzije 25. Firefox daje podršku od verzije 23, objavljene 6. avgusta, 2013. WebKit podržava od svoje verzije 528. X-WebKit-CSP — zastarelo; eksperimentalno zaglavlje, uvedeno u Google Chrome i druge pregledače zasnovane na WebKit-u (Safari) u 2011. X-Content-Security-Policy — zastarelo; eksperimentalno zaglavlje, uvedeno u pregledače zasnovane na Gecko 2 (Firefox 4 to Firefox 22, Thunderbird 3.3, SeaMonkey 2.1).

Veb-sajt može deklarisati različita CSP zaglavlja, kao i mešati ona koja se izvršavaju i ona koja služe samo za izveštavanje. Pregledač će obrađivati svako zaglavlje posebno.

Takođe, CSP može biti isporučen i bez HTML koda, korišćenjem HTML META elementa, samo što će, u ovom slučaju, njegova efikasnost biti ograničena.

Podrška za sandbox direktivu je takođe dostupna u Internet Explorer 10 i Internet Explorer 11 koji koriste eksperimentalno X-Content-Security-Policy zaglavlje.

Jedan broj programskih okvira (engl. frameworks) podržava CSP, kao na primer AngularJS i Django. Uputstva za Ruby on Rails su postavljena od strane GitHub-a. Podrška za veb-programske okvire je, međutim, potrebna samo ako CSP sadržaj na neki način zavisi od statusa veb-aplikacije - kao što je korišćenje jednokratno generisanih kodova (engl. nonce). Drugim rečima, CSP je češće statički i može biti dostavljen od strane viših slojeva veb aplikacije, npr. veb servera.

Od 2015. godine su preporučeni od strane W3C organizacije novi bezbednosni standardi, najvećim delom komplementarni sa CSP:

Sub-Resource Integrity (SRI), osigurava dobro poznate, pouzdane fajl resurse (obično JavaScript, CSS) da se učitavaju sa drugih servera (obično CDNs) Mixed Content, pojašnjava politiku namenjenu pregledačima na stranicama koje se učitavaju putem HTTPS i HTTP Upgrade Insecure Requests, nagoveštava pregledačima kako da rukuju nasleđenim linkovima na stranicama migriranim na HTTPS Credential Management, objedninjeni JavaScript API za pristup korisničkim akreditacijama, sa ciljem da olakša složene prijavne šeme Referrer Policy, CSP nadogradnja koja upućuje pregledač na generaciju Referer zaglavlja.

U decembru 2015. godine objavljen je metod zaobilaženja jednokratno generisanih kodova (engl. 'nonce') sa bele liste. Drugi metod upotpunjuje belu listu CSP-a kako bi se eksploatisale stare i ranjive verzije JavaScript biblioteka smeštene na istim serverima (najčešće sa CDN servera).

Način rada thumb|Mapiranje između HTML5/JavaScript i CSP kontrola

Ukoliko se Content-Security-Policy zaglavlje nalazi u odgovoru servera, odgovarajući klijent sprovodi deklarativnu politiku bele liste. Jedan primer cilja politike je strožiji način izvršavanja JavaScript-a u cilju sprečavanja određenih cross-site scripting napada. U praksi, ovo znači da su brojne funkcionalosti onemogućene:

Umetnuti JavaScript kod <script> blokovi, DOM rukovaoci događajima kao HTML atributi(npr. onclick) javascript: linkovi Umetnuti CSS kod <style> blokovi style pripisan HTML elementu Dinamička JavaScript evaluacija koda eval() string argumenti za setTimeout i setInterval funkcije new Function() konstruktor Dinamički CSS izrazi CSSStyleSheet.insertRule() metod

Dok upotreba CSP-a u novoj aplikaciji može biti prilično jednostavna, posebno sa CSP-kompatibilnim JavaScript okvirima, postojeće aplikacije mogu da zahtevaju refaktorisanje - relaksiranje politike. U praksi se za CSP-kompatiblne aplikacije preporučuje da se kod učita iz spoljašnjih izvornih fajlova (<script src>), parsiranje JSON umesto evaluacije i korišćenje EventTarget.addEventListener() da bi se podesili rukovaoci događajima.

Naglasiti

Izveštaj Kada god zatevani resurs ili izvršavanje skripta prekrši politiku, pregledač će "ispaliti" POST zahtev za vrednošu koja je navedena u report-uriContent Security Policy Level 2 i koja sadrži detalje prekršaja.

CSP izveštaji su standardne JSON strukture i mogu biti prikupljene bilo preko sopstvenog aplikacijskog API-jaNa primer u Django CSP primalac je dostupan u django-security modulu. ili javnim CSP primaocima izveštaja.

Dodaci pregledača i proširenja za izuzeća U skladu sa CSP modelom obrade,CPS ne bi trebalo da utiče na rad dodataka ili proširanja pregledača instaliranih od strane korisnika. Ova CPS funkcionalnost omogućava svakom dodatku ili proširanju da umetne skript u veb-sajtove, bez obzira na izvor nastajanja tog skripta, i na taj način bude izuzet iz CPS politika. Radna grupa za bezbednost veb-aplikacija W3C-a razmatra da li bi takav skript mogao da bude deo Trusted Computing Base implementacije veb-pregledača. Međutim, u radnoj grupi su predstavnici Cox Communications-a tvrdili da bi ovo izuzimanje moglo biti potencijalni sigurnosni propust koji bi mogao da bude iskorišćen od strane zlonamernih ili kompromitovanih dodataka ili proširenja.

Pogledati ostalo NoScript — anti-XSS zaštita i Application Boundaries Enforcer (ABE), proširenje za FirefoxNoScript Security Suite :: Add-ons for FirefoxNoScript - JavaScript/Java/Flash blocker for a safer Firefox experience! - what is it? - InformAction HTTP Switchboard — korisnički definisana CSP pravila, proširenje za Google Chrome i OperaHTTP Switchboard extension - Opera add-ons HTTP Strict Transport Security HTTP Public Key Pinning

Reference

Spoljašne veze Content Security Policy W3C Working Draft Content Security Policy Builder CSP Tester (browser extension) Secure Coding Guidelines for Content Security Policy CSP Violation Reporting CSP Deployment Survey

Категорија:Веб апликације