Sama alkuperäkäytäntö (Same Origin Policy ) on tärkeä käsite verkkosovellusten suojausmallissa . Osana tätä käytäntöä verkkoselain sallii yhden verkkosivun komentosarjojen saada tietoja toiselle verkkosivulle, mutta vain, jos molemmilla verkkosivuilla on sama alkuperä ( Origin ). Alkuperä koostuu mallin URI:n, toimialueen nimen ja portin numeron yhdistelmästä. Käytäntö estää yhdeltä verkkosivulta peräisin olevia haitallisia komentosarjoja pääsemästä arkaluonteisiin tietoihin toisella verkkosivulla kyseisen sivun DOM-puun kautta .
Tämä mekanismi on erityisen tärkeä nykyaikaisille verkkosovelluksille, jotka luottavat vahvasti HTTP-evästeisiin ylläpitääkseen todennettuja käyttäjäistuntoja. Koska palvelimet luottavat HTTP-evästeisiin arkaluontoisten tietojen paljastamiseen tai asiakaspuolen tilanmuutostoimintojen suorittamiseen, toisiinsa liittyvien sivustojen tarjoama sisältö on pidettävä tiukasti erotettuna, jotta estetään arkaluonteisten tietojen katoaminen tai tietojen eheyden vaarantuminen.
On erittäin tärkeää muistaa, että saman alkuperän periaate koskee vain skriptejä. Tämä tarkoittaa, että resursseja, kuten kuvia, CSS:ää ja dynaamisesti ladattuja komentosarjoja, voidaan käyttää mistä tahansa lähteestä asianmukaisten HTML-tunnisteiden avulla (paitsi kirjasimia). Hyökkäykset perustuvat siihen, että saman alkuperän periaate ei koske HTML-tageja.
Saman alkuperäperiaatteen käsitteen esitteli Netscape Navigator 2.02 vuonna 1995, pian sen jälkeen, kun JavaScript otettiin käyttöön Netscape 2.0:ssa. JavaScript mahdollisti komentosarjojen käytön verkkosivuilla, erityisesti Document Object Modelin (DOM) ohjelmallisen pääsyn saamiseksi.
Periaate suunniteltiin alun perin suojaamaan pääsyä DOM:iin, mutta sitä on sittemmin laajennettu suojaamaan maailmanlaajuisten JavaScript-objektien herkkiä osia.
Seuraavassa taulukossa on havainnollistava yleiskatsaus tyypillisistä tarkistuksista, joita voidaan verrata esimerkki- URL -osoitteeseen "http://www.example.com/dir/page.html".
Vertailukelpoinen URL-osoite | Tutkimus | Syy |
---|---|---|
http://www.example.com/dir/page.html _ | Vastaa | Sama protokolla ja verkkotunnus |
http://www.example.com/dir2/other.html _ | Vastaa | Sama protokolla ja verkkotunnus |
http:// käyttäjänimi:salasana@ www.esimerkki.fi /hakemisto2/muu.html | Vastaa | Sama protokolla ja verkkotunnus |
http://www.example.com:81/hakemisto/muu.html _ _ | Ei sovi yhteen | Sama protokolla ja toimialue, mutta eri portti |
https://www.example.com/dir/other.html _ | Ei sovi yhteen | Protokolla eroaa |
http://en.example.com/dir/other.html _ _ | Ei sovi yhteen | Domain eroaa |
http://example.com/dir/other.html _ _ | Ei sovi yhteen | Verkkotunnus on erilainen (täydellinen vastaavuus vaaditaan) |
http://v2.www.example.com/dir/other.html _ _ | Ei sovi yhteen | Verkkotunnus on erilainen (täydellinen vastaavuus vaaditaan) |
http://www.example.com:80/hakemisto/muu.html _ _ | Määrittämätön | Tarkka porttimääritys. Riippuu selaimen toteutuksesta. |