Iniziamo definendo il termine origine. L'origine di una pagina è decisa da tre fattori unici: nome host, protocollo e numero di porta. Ad esempio, http://test.com
e https://test.com
hanno origini diverse in quanto il protocollo è diverso. Allo stesso modo http://one.test.com
e http://two.test.com
hanno origini diverse poiché gli hostname sono diversi. La proprietà di origine è diversa anche per due servizi in esecuzione sullo stesso host con numeri di porta diversi, ad es. http://test.com:8081
e http://test.com:8082
sono considerati origini diverse.
Same Origin Policy (SOP) è un controllo di sicurezza a livello di browser che stabilisce in che modo un documento o uno script appartenente a un'origine può interagire con risorse di un'altra origine. Fondamentalmente, impedisce agli script in esecuzione sotto un'origine di leggere i dati da un'altra origine .
Le richieste di domini incrociati e l'invio di moduli sono ancora consentiti, ma non è consentita la lettura di dati da un'altra origine. Ciò significa che se si sta eseguendo un attacco CSRF su un sito vulnerabile che provoca alcune modifiche allo stato del lato server (ad es. Creazione dell'utente, eliminazione di documenti, ecc.), L'attacco avrà esito positivo ma non si sarà in grado di leggere la risposta.
In breve SOP impedisce solo di leggere i dati che sono stati serviti da un'origine diversa. Non copre gli invii di moduli interdominio che vengono utilizzati per effettuare un attacco CSRF.
Per quanto riguarda l'esecuzione della comunicazione interdominio usando AJAX, ci sono alcuni altri controlli di sicurezza che dettano la comunicazione. Fai riferimento a Condivisione delle risorse incrociate di origine . CORS consente a origini diverse di comunicare e condividere i dati in modo controllato e l'errata configurazione di CORS può anche risultare in vulnerabilità della sicurezza .
Si noti che SOP non impedisce che le risorse ospitate su domini diversi vengano incorporate in una pagina utilizzando tag script, tag CSS e immagine. Mentre questo potrebbe non consentire una lettura diretta dei contenuti, gli effetti collaterali del caricamento e del rendering possono essere utilizzati per determinare (parti del) il contenuto. Nota anche che i Websocket non sono coperti da SOP e quindi è possibile la lettura cross-site.
P.S. Tratto dal mio blog .