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 concurl
ywget
.Por lo tanto, en otras palabras, si no se puede acceder a un recurso desde un dispositivo aleatorio conectado a la web utilizando
curl
ywget
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.