Saman alkuperän käytäntö
Saman alkuperän käytäntö on web-sovellusten ohjelmoinnissa käytettävä tärkeä turvallisuusmittaselvennä client-skripteille (useimmiten JavaScript). Käytäntö perustuu Netscape 2.0 -selaimeen tarpeellisine korjauksineen Navigator 2.01 ja Navigator 2.02. Se estää dokumentin tai skriptin lataamisen yhdestä lähteestä hakemalla tai asettamalla ominaisuuksia eri lähteestä.
Rajoitukset
[muokkaa | muokkaa wikitekstiä]Saman alkuperän filosofia on yksinkertainen: Ei ole turvallista luottaa minkään www-sivun ladattuun sisältöön. Koska kaksinkertaisesti luotetut (semi-trusted) skriptit suoritetaan ns. hiekkalaatikossa, niillä on oikeus käyttää resursseja vain samalta www-sivustolta, mutta ei eri www-sivustolta, joka voi olla vihamielinen.
Termi lähde on määritelty koostuvaksi domain-nimestä, protokollasta ja joissakin tapauksissa portista. Kaksi www-sivua kuuluu samaan lähteeseen jos ja vain jos nämä kolme arvoa ovat samat. Havainnollistava taulukko antaa esimerkeillä lähteiden vertailuja URL:ille ”http://www.esimerkki.fi/hakem/muu.html”
URL | Tulos | Syy |
---|---|---|
http://www.esimerkki.fi/hakem2/muu.html | OK | Sama protokolla ja host |
http://www.esimerkki.fi/hakem/sisainen/muu.html | OK | Sama protokolla ja host |
http://www.esimerkki.fi:81/hakem2/muu.html | Virhe* | Sama protokolla ja host mutta eri portti |
https://www.esimerkki.fi/hakem2/muu.html | Virhe | Eri protokolla |
http://en.esimerkki.fi/hakem2/muu.html | Virhe | Eri host |
http://esimerkki.fi/hakem2/muu.html | Virhe | Eri host |
(*) Huomaa: Internet Explorer jättää huomiomatta portin kun lasketaan SOP-yhtäläisyyttä. Käyttämällä suhteellisia URLeja ja rajoittamalla niiden käyttöä vain samaan lähteeseen, tämä rajoitus on helposti vältettävissä.