Stavo leggendo su CORS e penso che l'implementazione sia sia semplice che efficace.Cross-Origin Resource Sharing (CORS) - Mi manca qualcosa qui?
Tuttavia, a meno che manchi qualcosa, penso che ci sia una grande parte mancante nelle specifiche. Come ho capito, è il sito straniero che decide, in base all'origine della richiesta (e facoltativamente includendo le credenziali), se consentire l'accesso alle sue risorse. Questo va bene.
Ma che cosa succede se il codice dannoso nella pagina desidera POSTARE le informazioni sensibili di un utente a un sito estraneo? Ovviamente il sito straniero sta per autenticare la richiesta. Quindi, ancora una volta se non mi manca qualcosa, CORS rende in realtà più facile rubare informazioni sensibili.
Penso che avrebbe molto più senso se il sito originale potesse fornire anche un elenco immutabile di server a cui la sua pagina è autorizzata ad accedere.
Quindi la sequenza espansa sarebbe:
- alimentazione una pagina con la lista dei server CORS accettabili (abc.com, xyz.com, ecc)
- Pagina vuole fare una richiesta XHR a abc. com - il browser lo consente perché è nella lista consentita e l'autenticazione procede normalmente
- Page vuole fare una richiesta XHR a malicious.com - richiesta respinta localmente (ad esempio dal browser) perché il server non è nella lista.
so che codice dannoso potrebbe ancora utilizzare JSONP per fare il suo sporco lavoro, ma avrei pensato che una completa implementazione di CORS implicherebbe la chiusura del tag script multi-sito scappatoia.
Ho anche verificato le specifiche CORS ufficiali (http://www.w3.org/TR/cors) e non ho trovato alcun riferimento a questo problema.
Il mio punto principale non era tanto la chiusura delle lacune attuali, piuttosto era il fatto che sembra (almeno per me) essere un grande buco nelle specifiche CORS. –