Due cose da capire su CORS:
-
CORS non serve per autenticare / approvare il client , è per approvare una richiesta originata dal codice che si esegue all'interno di una pagina web su un'origine che è destinata a un'altra origine (come il codice JavaScript su domain1.com facendo una XmlHttpRequest su domain2.com).
-
L'applicazione CORS è interamente client-side. Il server non convalida nulla.
Il client è responsabile per chiedere al server web, "a chi è consentito connettersi?". Il server web gli fornisce un elenco (ovvero l'intestazione Access-Control-Allow-Origin
) delle origini di origine che il client potrebbe visualizzare, a cui è consentito effettuare richieste.
Il client (browser) controlla se l'origine che sta servendo è nell'elenco o corrisponde al carattere jolly e, in caso affermativo, consente la richiesta, altrimenti la blocca.
So che, in generale, sembra sciocco dipendere dal client per sicurezza, ma la cosa da ricordare è che CORS è una specifica per il relax della politica di origine identica, che è interamente un concetto di browser Web.
La politica della stessa origine e le CORS sono prive di significato al di fuori del contesto dei browser web. Da una pura prospettiva di interazione HTTP e client / server, non c'è nulla di intrinsecamente insicuro nel fare una richiesta HTTP a un server web. I server Web sono destinati a ricevere richieste. Questo è il loro scopo. La politica della stessa origine è in atto per prevenire gli abusi da sandboxing pagine web . CORS è un modo per consentire a un browser di giocare al di fuori della sua sandbox in modo controllato, sicuro e revocabile. L'onere è sui browser per rafforzarlo perché i browser sono quelli a cui interessa davvero.