Zásady stejného původu (Same Origin Policy ) jsou důležitým konceptem v bezpečnostním modelu webových aplikací . V rámci této zásady webový prohlížeč umožňuje skriptům na jedné webové stránce získat data na druhé webové stránce, ale pouze v případě, že obě webové stránky mají stejný původ ( Origin ). Původ se skládá z kombinace URI schématu, názvu domény a čísla portu. Tato zásada omezuje škodlivé skripty z jedné webové stránky v získání přístupu k citlivým informacím na jiné webové stránce prostřednictvím stromu DOM této stránky .
Tento mechanismus je zvláště důležitý pro moderní webové aplikace, které k udržování ověřených uživatelských relací silně spoléhají na HTTP cookies . Vzhledem k tomu, že servery spoléhají na soubory cookie HTTP při zveřejňování citlivých informací nebo provádění akcí změny stavu na straně klienta, musí být zachována přísná segregace obsahu poskytovaného nesouvisejícími weby, aby se zabránilo ztrátě citlivých dat nebo narušení integrity dat.
Je velmi důležité si uvědomit, že princip stejného původu platí pouze pro skripty. To znamená, že ke zdrojům, jako jsou obrázky, CSS a dynamicky načítané skripty, lze přistupovat z jakéhokoli zdroje prostřednictvím příslušných značek HTML (kromě písem). Útoky spoléhají na skutečnost, že princip stejného původu se nevztahuje na HTML tagy.
Koncept stejného principu původu zavedl Netscape Navigator 2.02 v roce 1995, krátce po zavedení JavaScriptu v Netscape 2.0. JavaScript umožnil použití skriptů na webových stránkách, zejména pro získání programového přístupu k Document Object Model (DOM).
Princip byl původně navržen k ochraně přístupu k DOM, ale od té doby byl rozšířen na ochranu citlivých částí globálních objektů JavaScriptu.
Pro ilustraci uvádí následující tabulka přehled typických kontrol pro srovnání s příkladem URL „http://www.example.com/dir/page.html“.
Srovnatelné URL | Zkouška | Způsobit |
---|---|---|
http://www.example.com/dir/page.html _ | Odpovídá | Stejný protokol a doména |
http://www.example.com/dir2/other.html _ | Odpovídá | Stejný protokol a doména |
http:// uživatelské jméno:heslo@ www.example.com /dir2/other.html | Odpovídá | Stejný protokol a doména |
http://www.example.com:81/dir/other.html _ _ | Nesouhlasí | Stejný protokol a doména, ale jiný port |
https://www.example.com/dir/other.html _ | Nesouhlasí | Protokol se liší |
http://en.example.com/dir/other.html _ _ | Nesouhlasí | Doména se liší |
http://example.com/dir/other.html _ _ | Nesouhlasí | Doména se liší (vyžaduje se úplná shoda) |
http://v2.www.example.com/dir/other.html _ _ | Nesouhlasí | Doména se liší (vyžaduje se úplná shoda) |
http://www.example.com:80/dir/other.html _ _ | Nedefinováno | Explicitní specifikace portu. Záleží na implementaci v prohlížeči. |