Az azonos származási házirend (Same Origin Policy ) fontos fogalom a webalkalmazások biztonsági modelljében . Ennek az irányelvnek a részeként a webböngésző lehetővé teszi, hogy az egyik weboldalon lévő szkriptek adatokat kapjanak egy másik weboldalon, de csak akkor, ha mindkét weboldal azonos eredetű ( Origin ). Az eredet egy séma URI, egy tartománynév és egy portszám kombinációjából áll. A házirend megakadályozza, hogy az egyik weboldal rosszindulatú szkriptjei hozzáférjenek egy másik weboldal érzékeny információihoz az adott oldal DOM-fáján keresztül .
Ez a mechanizmus különösen fontos a modern webalkalmazások számára, amelyek nagymértékben támaszkodnak HTTP cookie -kra a hitelesített felhasználói munkamenetek fenntartása érdekében. Mivel a szerverek HTTP cookie -kra támaszkodnak az érzékeny információk felfedésére vagy az ügyféloldali állapotmódosítási műveletek végrehajtására, a nem kapcsolódó webhelyek által biztosított tartalom szigorú elkülönítését fenn kell tartani az érzékeny adatok elvesztésének vagy az adatok sértetlenségének megelőzése érdekében.
Nagyon fontos megjegyezni, hogy az azonos eredet elve csak a szkriptekre vonatkozik. Ez azt jelenti, hogy az olyan erőforrások, mint a képek, a CSS és a dinamikusan betöltött szkriptek bármely forrásból elérhetők a megfelelő HTML-címkéken keresztül (a betűtípusok kivételével). A támadások azon a tényen alapulnak, hogy az azonos eredet elve nem vonatkozik a HTML-címkékre.
Az azonos származási elv koncepcióját a Netscape Navigator 2.02 vezette be 1995-ben, röviddel a JavaScript Netscape 2.0-ban történő bevezetése után. A JavaScript lehetővé tette a szkriptek használatát a weboldalakon, különösen a Document Object Model (DOM) programozott hozzáférését .
Az elvet eredetileg a DOM-hoz való hozzáférés védelmére tervezték, de azóta kiterjesztették a globális JavaScript objektumok érzékeny részeinek védelmére.
Szemléltetésképpen az alábbi táblázat áttekintést nyújt a tipikus ellenőrzésekről a „http://www.example.com/dir/page.html” példa URL -lel való összehasonlításhoz.
Összehasonlítható URL | Vizsgálat | Ok |
---|---|---|
http://www.example.com/dir/page.html _ | Megfelel | Ugyanaz a protokoll és a tartomány |
http://www.example.com/dir2/other.html _ | Megfelel | Ugyanaz a protokoll és a tartomány |
http:// username:password@ www.example.com /dir2/other.html | Megfelel | Ugyanaz a protokoll és a tartomány |
http://www.example.com:81/könyvtár/egyéb.html _ _ | Nem egyezik | Ugyanaz a protokoll és a tartomány, de más a port |
https://www.example.com/dir/other.html _ | Nem egyezik | A protokoll különbözik |
http://en.example.com/dir/other.html _ _ | Nem egyezik | A domain eltér |
http://example.com/dir/other.html _ _ | Nem egyezik | A domain eltér (teljes egyezés szükséges) |
http://v2.www.example.com/dir/other.html _ _ | Nem egyezik | A domain eltér (teljes egyezés szükséges) |
http://www.example.com:80/könyvtár/egyéb.html _ _ | Meghatározatlan | Explicit port specifikáció. A böngészőben való megvalósítástól függ. |