Come mai le chiamate img non violano il SOP (Same Origin Policy)?

2

Sono un po 'confuso riguardo l'argomento della politica sulla stessa origine.

Se capisci correttamente. Lo scopo di SOP è impedire a una pagina di ottenere l'accesso a dati sensibili su un'altra pagina Web.

Quindi, ad esempio, come mai posso ottenere semplicemente un'immagine sensibile da un'origine diversa? Ciò violerebbe l'idea di SOP.

    
posta Eric Peers 26.07.2018 - 20:29
fonte

4 risposte

1

L'app non può ottenere alcun dato sensibile dall'IMG. Se si tenta di leggere i dati dei pixel con un tag, ad esempio, il browser deve lanciare un'eccezione SOP, a meno che non venga utilizzato cors. Poiché l'immagine può essere visualizzata (dall'utente umano) ma non controllata a livello di codice (dal codice JS), la politica dell'immagine è considerata "abbastanza buona".

Devo sottolineare che è / è stato possibile ottenere le dimensioni dell'immagine da un'immagine remota, che potrebbe essere considerato informazioni sensibili, specialmente su URL di immagini dinamiche che mostrano un "buono / cattivo" immagine di diverse dimensioni che si altera in base a qualche stato. Tuttavia, questa è una quantità minima di informazioni, e in genere non riguarda la privacy.

Per cambiare questa politica si rompono una tonnellata di siti, che richiedono "deep linking" per mostrare risorse da reti di consegna di contenuti, imgur, ecc.

    
risposta data 26.07.2018 - 21:03
fonte
1

Questo è considerato accettabile perché gli script sono limitati nell'interagire con immagini di origine incrociata a meno che non sia impostato crossorigin="anonymous" , che indica al browser di non inviare cookie o altre credenziali quando recupera l'immagine. Senza impostare crossorigin="anonymous" gli script possono recuperare le dimensioni, ma non i dati pixel dell'immagine a causa della tela contaminata .

In teoria ciò va bene, sebbene ci siano stati attacchi a in passato perdita di dati pixel.

    
risposta data 26.07.2018 - 21:18
fonte
0

I tag immagine inviano solo una richiesta GET alla destinazione e acquisiscono i contenuti se la destinazione è un'immagine. Prova e incorpora una pagina con informazioni sensibili all'interno di un tag immagine, invierà una richiesta GET, ma non restituirà nulla di natura sensibile.

Javascript ha il potenziale per mandarti a una pagina e restituire il contenuto della pagina (usando ajax questo può essere realizzato).

Questo è ovviamente problematico, in quanto alcune pagine conterranno alcune informazioni sensibili e, come tale, dovrebbero essere possibili solo con determinate API e pagine all'interno dello stesso sito web.

    
risposta data 26.07.2018 - 21:59
fonte
0

La stessa politica di origine non è un assioma pulito e uniforme: in realtà è un insieme di regole specifiche e casi speciali fossilizzati nel Web moderno. Non è possibile definire la stessa politica di origine con una breve descrizione che raccolga correttamente i dettagli essenziali: i casi speciali contano in pratica.

Le regole per i cookie sono le regole di JS e non sono nemmeno perfettamente definite e indipendenti dal browser. I cookie sono molto debolmente protetti nel Web moderno a causa di queste regole fossilizzate, che devono essere prese in considerazione nella progettazione di un'identificazione Web sicura:

  • Il grado di comunicazione tra sottodomini consentito dai cookie è estremamente utile (un sottodominio può impostare un cookie che viene utilizzato da un altro) ma anche una potenziale fonte di confusione, poiché il browser non invierà un cookie con il nome del dominio che lo ha impostato.
  • Un cookie impostato su una pagina Web http verrà rinviato allo stesso dominio su una pagina Web https, senza indicazione dell'origine.

Al contrario, le moderne tecnologie Web in grado di archiviare dati (come localStorage e sessionStorage) nell'archivio del browser (insieme al "cookie jar") sono separate strettamente per origine con il dominio esatto e lo schema URL.

L'inclusione di un'immagine da un altro sito non deve essere eseguita con un oggetto con dimensioni specificate (a differenza degli elementi frame in cui il layout è specificato dalla pagina frameset o dalla pagina che ospita l'iframe), quindi il layout dipende da le dimensioni dell'immagine caricata; almeno una pagina Web può verificare se è possibile caricare un URL immagine, che a volte può indicare se un utente è registrato su un sito Web, ad esempio.

Le regole per caricare script e fogli di stile sono speciali; questo è un buco nella politica che è utile per l'interfaccia con altri domini: uno script caricato dal dominio che fornisce il servizio può impostare alcune variabili per memorizzare il risultato di un calcolo. Questo modo molto sporco di effettuare chiamate di procedura remota è chiamato "JSONP".

E poi, ci sono canali laterali per misurare il tempo di caricamento delle risorse, una pagina non ha il diritto di vedere o misurare ...

    
risposta data 02.11.2018 - 02:12
fonte

Leggi altre domande sui tag