Samme oprindelsespolitik (Same Origin Policy ) er et vigtigt koncept i webapplikationssikkerhedsmodellen . Som en del af denne politik tillader webbrowseren, at scripts på én webside henter data på en anden webside, men kun hvis begge websider har samme oprindelse ( Oprindelse ). Oprindelsen består af en kombination af en skema-URI, et domænenavn og et portnummer. Politikken begrænser ondsindede scripts fra én webside i at få adgang til følsomme oplysninger på en anden webside gennem sidens DOM-træ .
Denne mekanisme er af særlig betydning for moderne webapplikationer, der er stærkt afhængige af HTTP-cookies for at opretholde autentificerede brugersessioner. Fordi servere er afhængige af HTTP-cookies til at afsløre følsomme oplysninger eller udføre handlinger til ændring af tilstanden på klientsiden, skal streng adskillelse af indhold leveret af ikke-relaterede websteder opretholdes for at forhindre tab af følsomme data eller kompromitteret dataintegritet.
Det er meget vigtigt at huske, at princippet om samme oprindelse kun gælder for scripts. Det betyder, at ressourcer såsom billeder, CSS og dynamisk indlæste scripts kan tilgås fra enhver kilde gennem de relevante HTML-tags (undtagen skrifttyper). Angrebene er afhængige af, at samme oprindelsesprincippet ikke gælder for HTML-tags.
Konceptet med det samme oprindelsesprincip blev introduceret af Netscape Navigator 2.02 i 1995, kort efter introduktionen af JavaScript i Netscape 2.0. JavaScript gjorde det muligt at bruge scripts på især websider for at få programmatisk adgang til Document Object Model (DOM).
Princippet blev oprindeligt designet til at beskytte adgangen til DOM, men er siden blevet udvidet til at beskytte følsomme dele af globale JavaScript-objekter.
Til illustration giver følgende tabel en oversigt over typiske kontroller til sammenligning med eksempelwebadressen " http://www.example.com/dir/side.html".
Sammenlignelig URL | Undersøgelse | årsag |
---|---|---|
http://www.example.com/dir/side.html _ | Svarer til | Samme protokol og domæne |
http://www.example.com/dir2/andet.html _ | Svarer til | Samme protokol og domæne |
http:// brugernavn:adgangskode@ www.eksempel.com /dir2/andet.html | Svarer til | Samme protokol og domæne |
http://www.example.com:81/dir/andet.html _ _ | Passer ikke sammen | Samme protokol og domæne men anden port |
https://www.example.com/dir/andet.html _ | Passer ikke sammen | Protokol er forskellig |
http://en.example.com/dir/other.html _ _ | Passer ikke sammen | Domæne adskiller sig |
http://example.com/dir/andet.html _ _ | Passer ikke sammen | Domæne afviger (fuldt match påkrævet) |
http://v2.www.example.com/dir/andet.html _ _ | Passer ikke sammen | Domæne afviger (fuldt match påkrævet) |
http://www.example.com:80/dir/andet.html _ _ | Udefineret | Eksplicit portspecifikation. Afhænger af implementeringen i browseren. |