origin missing headers habilitar control chrome allow api cordova mobile cors hybrid-mobile-app

api - missing - Seguridad CORS con aplicaciones móviles



cors php (2)

Necesitamos mantener nuestra seguridad del servidor API con la restricción CORS:

Access-Control-Allow-Origin : http://myonlinesite.com

Pero también necesitamos que esta API sea accesible para nuestras aplicaciones móviles (Android + iOs).

Todas las soluciones que encontré me dicen que permita todo el origen: * , pero esto sería un gran error de seguridad para nuestra API.

Estamos construyendo nuestras aplicaciones con Cordova, que WebView sirve archivos locales y, por lo tanto, envía: origin: null , para todas sus solicitudes de http (s). Entonces, estamos pensando en agregar null al origen permitido. Es mejor, ya que bloqueará cualquier otro sitio web que intente obtener nuestra API, pero permitirá que cualquier aplicación móvil lo busque ...

¿Hay alguna solución más interesante para esto?

¡Gracias!


Entonces, estamos pensando en agregar nulo al origen permitido. Es mejor, ya que bloqueará cualquier otro sitio web que intente obtener nuestra API, pero permitirá que cualquier aplicación móvil lo busque ...

Bien, si lo hace, está permitiendo solicitudes de código JavaScript que se ejecuta desde cualquier origen que no sea http / https, que incluye a cualquiera que ejecute cualquier cosa desde un file:// o incluso data: URL.

Entonces, si está utilizando una política CORS restrictiva por razones de "seguridad", entonces el envío de respuestas con un encabezado Access-Control-Allow-Origin: null suena como una muy mala idea.

Necesitamos mantener nuestra seguridad del servidor API con la restricción CORS: todas las soluciones que encontré me dicen que permita todo el origen: * , pero esto sería un gran error de seguridad para nuestra API.

No explica por qué ha determinado que sería una falla de seguridad o por qué necesita tener una política CORS restrictiva. Pero a menos que (1) su servidor web se esté ejecutando en una intranet o detrás de otro tipo de firewall, y (2) el acceso a los recursos esté restringido solo por la autenticación de IP, entonces no obtendrá nada del uso de una política CORS restrictiva . Para citar la especificación :

Configuración básica del protocolo CORS seguro

Para los recursos donde los datos están protegidos a través de la autenticación IP o un firewall (lamentablemente relativamente común), el uso del protocolo CORS no es seguro. (Esta es la razón por la cual el protocolo CORS tuvo que ser inventado.)

Sin embargo, de lo contrario, usar el siguiente encabezado es seguro:

Access-Control-Allow-Origin: *

Incluso si un recurso expone información adicional basada en cookies o autenticación HTTP, el uso del encabezado anterior no lo revelará. Compartirá el recurso con API como XMLHttpRequest , al igual que ya se comparte con curl y wget .

Por lo tanto, en otras palabras, si no se puede acceder a un recurso desde un dispositivo aleatorio conectado a la web utilizando curl y wget el encabezado antes mencionado no debe incluirse. Si se puede acceder sin embargo, está perfectamente bien hacerlo.


Sí, el hecho de que WKWebView requiera el uso de CORS es un problema. Sin embargo, no presenta un riesgo de seguridad en el contexto de una aplicación móvil.

La misma política de origen (que CORS extiende) está diseñada para un tipo específico de amenaza: una secuencia de comandos de un dominio extranjero, que se ejecuta en el navegador, que envía una solicitud a su servidor que incluye sus cookies de autorización.

El punto clave está en el navegador . Si está ejecutando su aplicación en un WKWebView entonces no habrá ningún script extranjero que pueda realizar una solicitud a su servidor utilizando sus cookies. Ahora, si también lo está usando como una aplicación web, es decir, hay una manera para que los usuarios inicien sesión y obtengan una cookie de autorización en el contexto de un navegador, entonces tendrá que tomar medidas adicionales. Pero supongo que ese no es el caso.

Así que Access-Control-Allow-Origin: null debería estar bien.