¿Cómo asegurarse de que una solicitud de API proviene de un dominio específico?

2

Estoy abriendo un acceso de API a mi sitio y mis usuarios deben especificar desde cuál de sus sitios web, como example.com, realizarán las solicitudes de API.

Me pregunto si hay alguna forma de verificar que una solicitud HTTP provenga de un dominio específico para que pueda hacer responsable al usuario / dominio.

    
pregunta datasn.io 21.06.2015 - 04:17
fuente

2 respuestas

5

Supongo que lo que quiere decir es que los visitantes de otro sitio realizarán solicitudes del lado del cliente a su API, y desea atribuir estas solicitudes a ese sitio.

Hay varias maneras de hacerlo, dependiendo de qué tan fuerte necesite la autenticación.

Si solo está utilizando los datos con fines estadísticos y tal vez para evitar el uso no autorizado de atacantes poco sofisticados, puede usar la referencia HTTP. Por supuesto, esto puede ser falsificado, por lo que no será adecuado si requiere una autenticación muy sólida.

Otra opción es usar una clave API / ID de sitio que se pasa junto con todas las solicitudes. Un atacante podría fácilmente tomar la clave API de un cliente y abusar de ella, o usarla en otro sitio, pero al menos puede volver a emitir la clave / ID si se abusa a diferencia del remitente.

Si necesita una autenticación muy sólida, tendrá que hacer que sus clientes generen un token firmado por tiempo limitado en el lado del servidor, que luego el usuario le transmite a usted. Básicamente, cada cliente tendría una clave secreta en el lado del servidor y la utilizarían para cifrar un mensaje, incluido un límite de tiempo; puede verificarlo descifrando cuando el usuario se lo transmite. Es posible que pueda aprovechar algo como enlace para hacer esto. La desventaja de esto es que no puede hacerlo completamente en el lado del cliente, por lo que sus clientes podrían tener que hacer algunos cambios en su aplicación.

    
respondido por el thexacre 22.06.2015 - 02:29
fuente
0

La solución más completa sería utilizar TLS con certificados de cliente. Esto permite al servidor verificar la identidad del cliente. Es probable que cualquier otra solución, como JWT o algún esquema de firma personalizado, sea extremadamente inseguro. TLS hace todo el trabajo duro por ti. Si está especialmente preocupado por los compromisos de CA, puede configurarse como CA y luego agregarse solo al grupo de confianza.

    
respondido por el Paddy Steed 22.06.2015 - 04:31
fuente

Lea otras preguntas en las etiquetas