La Autenticación básica, incluidos los tokens de portador, depende del uso de TLS para evitar que los intrusos accedan a sus credenciales o tokens confidenciales. Pero creo que hay un elefante en la habitación de lo que nadie habla.
Los usuarios a menudo solo escriben "www.somesite.com" en lugar de " enlace ". Cuando no especifique el protocolo, el navegador del cliente probará primero la conexión HTTP predeterminada, sin cifrar.
El problema es que el usuario básicamente solicita que se realice una conexión no cifrada al servidor porque ese es el valor predeterminado cuando no se especifica ningún protocolo. El navegador podría incluir potencialmente información confidencial en los encabezados de solicitud, incluidas las credenciales de Autenticación Básica, Tokens (e incluso Cookies que no están configuradas como "Seguras")
Para los clientes de API que envían tokens, la situación es similar, pero parcialmente mitigada por aplicaciones de cliente bien escritas que
- En realidad solo use el puerto cifrado SSL para conectarse, y
- El desarrollador realmente dio vuelta a "Verificar el certificado SSL" Opción en antes de que publique su aplicación.
Pienso en configurar un proxy MITM en mi red doméstica para comenzar a verificar y registrar las aplicaciones que uso. En particular, quiero falsificar algunos registros de DNS y ver si las aplicaciones realmente obstaculizan el envío de sus credenciales / tokens al servidor incorrecto.
Personalmente, hubiera preferido que se especificara que JWT se enviara solo en una cookie SEGURA, en lugar de en los encabezados ... ¿Alguien aquí cree que mi preocupación no está justificada?
EDITAR: Para aclarar: no estoy tan preocupado por la debilidad de SSL o los ataques contra DNS, estoy más preocupado por las credenciales que se exponen porque los clientes terminan enviándolo a través de conexiones no cifradas en cualquier caso, ya sea debido al usuario mal comportamiento o porque el cliente simplemente sigue las redirecciones a los puertos SSL pero solo después de enviar las credenciales del usuario. Al diseñar las API, a partir de ahora agregaré una escucha en el puerto sin cifrar. Si recibe algún token en ese puerto, lo hará
- No redirigir, y
- invalidar las credenciales, y
- enviar al usuario una advertencia.
Es de esperar que los desarrolladores que escriben aplicaciones que consumen estas API obtengan la pista. ¿La inclusión en la lista negra de la propiedad intelectual durante unas pocas horas sería demasiado dura?
P.S. Nota: con las cookies seguras todavía dependemos de que el navegador se implemente correctamente.