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-Origin
encabezado, 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 Origin
ya 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 HTTP
llamadas usando curl
, Python
, C#
, etc, y alterar la Origin
cabecera a los servidores de truco.
P: Entonces, si puedo engañar al servidor alterando Origin
, ¿significa CORS
que 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 HTTP
se 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-Origin
encabezado 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-Origin
encabezado o el navegador no permite la solicitudbar.com
.