Saltar al contenido

¿Es CORS una forma segura de realizar solicitudes AJAX entre dominios?

Ya no tienes que investigar más por otras páginas ya que has llegado al lugar justo, tenemos la solución que necesitas hallar pero sin complicarte.

Solución:

El propósito es prevenir esto –

  • Vas al sitio web X
  • El autor del sitio web X ha escrito un script malvado que se envía a su navegador.
  • ese script que se ejecuta en su navegador inicia sesión en el sitio web de su banco y hace cosas malvadas y porque se está ejecutando como tu en su navegador tiene permiso para hacerlo.

La idea es que el sitio web de su banco necesite alguna forma de decirle a su navegador si se debe confiar en los scripts del sitio web X para acceder a las páginas de su banco.

Solo para agregar la respuesta de @jcoder, todo el punto de la Origin El encabezado no es para proteger los recursos solicitados en un servidor. Esa tarea depende del propio servidor a través de otros medios, exactamente porque un atacante puede falsificar este encabezado con las herramientas adecuadas.

el punto de la Origin El encabezado es para proteger al usuario. El escenario es el siguiente:

  • un atacante crea un sitio web malicioso M

  • se engaña a un usuario Alice para que se conecte a M, que contiene un script que intenta realizar algunas acciones a través de CORS en un servidor B que en realidad es compatible con CORS

  • B probablemente no tendrá M en su Access-Control-Allow-Origin encabezado, porque ¿por qué lo haría?

  • El punto central es que M no tiene medios para falsificar o sobrescribir el Origin encabezado, porque las solicitudes son iniciadas por el navegador de Alice. Entonces su navegador configurará el (correcto) Origin a M, que no está en el Access-Control-Allow-Origin de B, por lo tanto, la solicitud fallará.

Alice podría alterar el Origin se dirige ella misma, pero ¿por qué lo haría, ya que significaría que se está haciendo daño a sí misma?

TL; DR: El Origin El encabezado protege al usuario inocente. No protege los recursos en un servidor. Un atacante puede falsificarlo en su propia máquina, pero no puede falsificarlo en una máquina que no esté bajo su control.

Los servidores aún deben proteger sus recursos, como una coincidencia Origin encabezado no significa un acceso autorizado. Sin embargo, un Origin encabezado que NO coincide significa un acceso no autorizado.

No puede falsificar un encabezado de origen con JavaScript en un navegador web. CORS está diseñado para evitar eso.

Fuera de un navegador web, no importa. No está diseñado para evitar que las personas obtengan datos que están disponibles para el público. No puede exponerlo al público sin que los miembros del público lo comprendan.

Está diseñado para que dado:

  • Alice, una persona que proporciona una API diseñada para acceder a través de Ajax
  • Bob, una persona con un navegador web
  • Charlie, un tercero que ejecuta su propio sitio web

Si Bob visita el sitio web de Charlie, entonces Charlie no puede enviar JS al navegador de Bob para que obtenga datos del sitio web de Alice y se los envíe a Charlie.

La situación anterior se vuelve más importante si Bob tiene una cuenta de usuario en el sitio web de Alice que le permite hacer cosas como publicar comentarios, eliminar datos o ver datos que son no disponible para el público en general, ya que sin protección, el JS de Charlie podría decirle al navegador de Bob que lo haga a espaldas de Bob (y luego enviar los resultados a Charlie).

Si desea evitar que personas no autorizadas vean los datos, debe protegerlos con contraseñas, certificados de cliente SSL o algún otro medio de autenticación/autorización basada en la identidad.

Comentarios y valoraciones de la guía

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *