Solo una humilde conclusión:
P: ¿La misma política de origen (SOP) se aplica solo por los navegadores?
A: si. Para todas las llamadas que realice dentro de un navegador, el navegador definitivamente aplica el SOP. El servidor puede o no verificar el origen de la solicitud.
P: Si una solicitud no cumple con SOP, ¿el navegador la bloquea?
R: No, está más allá de la autoridad de los navegadores. Los navegadores solo envían solicitudes de origen cruzado y esperan la respuesta para ver si el servidor señala la llamada legítima a través de Access-Control* encabezados. Si el servidor no devuelve el Access-Control-Allow-Originencabezado, no hace eco del origen de la persona que llama o no devuelve *el encabezado, entonces todo lo que hará un navegador es abstenerse de proporcionar la respuesta a la persona que llama.
P: ¿Significa que no puedo engañar Origin?
R: En el navegador y al usar secuencias de comandos, no puede anular Originya que está bajo el control del navegador. Sin embargo, si desea piratearse, puede manipular las llamadas que salen de SU navegador utilizando extensiones de navegador u otras herramientas que instale en su máquina. También puede emitir HTTPllamadas usando curl, Python, C#, etc, y alterar la Origincabecera a los servidores de truco.
P: Entonces, si puedo engañar al servidor alterando Origin, ¿significa CORSque no es seguro?
R: CORS per se no dice nada sobre seguridad, es decir, autenticación y autorización de solicitudes. Depende de los servidores inspeccionar las solicitudes y autenticarlas / autorizarlas mediante cualquier mecanismo con el que trabajen, como cookies y encabezados. Dicho esto, puede protegernos un poco más en caso de ataques como XSS:
Ejemplo:
supongamos que ha iniciado sesión en su sitio web y un script malintencionado intenta enviar una solicitud al sitio web de su banco para consultar su saldo: un ataque XSS reflejado . El sitio web de su banco confía en las credenciales que provienen (aquí en nombre de) su sitio web para que la solicitud se autentique y HTTPse emita una respuesta que apunte al código malicioso. Si el sitio web de su banco no se preocupa por compartir sus puntos finales con otros orígenes, no incluyeAccess-Control-Allow-Originencabezado en la respuesta. Ahora, al llegar la solicitud, el navegador se da cuenta de que la solicitud era una solicitud Cross Origins, pero la respuesta no muestra que el servidor estaba feliz de compartir el recurso (aquí el punto final de consulta de saldo) con su sitio web. Por lo tanto, rompe el flujo, por lo tanto, el resultado devuelto nunca alcanzará el código malicioso.
foo.com) tiene que proporcionar elAccess-Control-Allow-Originencabezado o el navegador no permite la solicitudbar.com.