Skip to content
tutorials

El secreto de 20 años de PHP finalmente ha salido a la luz

Un error silencioso en PHP ha estado filtrando credenciales sensibles durante más de dos décadas, incluso de HTTPS a HTTP. La solución oficial finalmente está aquí, pero una brecha crítica significa que sus API keys personalizadas aún podrían estar expuestas.

Marcus Lee
El secreto de 20 años de PHP finalmente ha salido a la luz

La trampa de redirección de dos décadas

Durante dos décadas, una falla de seguridad sutil pero significativa en PHP comprometió silenciosamente innumerables aplicaciones. Desde 2003, la función ampliamente utilizada file_get_contents, destinada a obtener contenido de URL, seguía automáticamente las redirecciones HTTP sin cuestionar. Esta característica aparentemente inofensiva creó una vulnerabilidad grave, exponiendo inadvertidamente datos sensibles de los usuarios.

Cuando un script utilizaba file_get_contents para acceder a una API e incluía un Authorization header (que contenía bearer tokens u otras credenciales), PHP reenviaba ciegamente este encabezado a cualquier nuevo dominio especificado en una redirección. El sistema asumía que el nuevo destino era confiable, continuando con el envío de detalles de autenticación incluso si la redirección apuntaba a un servidor completamente diferente.

El escenario más peligroso involucraba una degradación de HTTPS a HTTP. Si una solicitud segura inicial se redirigía a un endpoint HTTP sin cifrar, PHP aún enviaba los tokens sensibles. Esto significaba que las credenciales, originalmente protegidas por TLS, viajaban completamente sin cifrar a través de la red, haciéndolas trivialmente interceptables por actores malintencionados. Este mecanismo de reenvío silencioso puso en riesgo a innumerables aplicaciones.

El parche está aquí, pero no es perfecto

El problema central era el reenvío silencioso de datos sensibles por parte de PHP durante las redirecciones. Afortunadamente, un nuevo parche finalmente aborda este problema de décadas de antigüedad, introduciendo una verificación de seguridad crítica. Ahora, si una redirección cambia el esquema (como de HTTP a HTTPS), el host o el puerto, PHP elimina inteligentemente los encabezados Authorization y Cookie. Esta intervención crucial evita que sus credenciales sensibles viajen inadvertidamente a un nuevo servidor no deseado y potencialmente malicioso.

Para beneficiarse de esta actualización de seguridad crucial, los desarrolladores deben actualizar sus instalaciones de PHP de inmediato. La solución está disponible en las últimas versiones de parche para las versiones de PHP 8.2 a 8.5. Actualizar asegura que su servidor ejecute una versión que proteja activamente contra esta filtración específica de credenciales, cerrando una brecha de seguridad significativa que ha existido durante años.

Fundamentalmente, este parche no resuelve todos los escenarios de filtración de credenciales. La solución oficial solo se aplica a los encabezados estándar Authorization y Cookie, que son ampliamente reconocidos. Cualquier encabezado personalizado que pueda usar, como una X-API-Key u otros tokens a medida, sigue siendo vulnerable a la misma trampa de redirección. Estas credenciales personalizadas aún se reenviarán automáticamente al nuevo servidor, lo que requiere un manejo manual cuidadoso.

Por qué Guzzle salvó a Laravel (Y cómo salvarse a sí mismo)

Muchos desarrolladores que utilizan el cliente HTTP de Laravel o la biblioteca subyacente Guzzle ya estaban protegidos contra esta vulnerabilidad de dos décadas. Guzzle, un cliente HTTP robusto, gestiona las redirecciones con una mentalidad de seguridad primero. Evita explícitamente el reenvío ciego de encabezados sensibles como Authorization o Cookie al redirigir a un esquema, host o puerto diferente, ofreciendo un enfoque mucho más seguro que la función nativa file_get_contents de PHP.

El nuevo parche de PHP (disponible en las versiones 8.2 a 8.5) aborda los encabezados Authorization y Cookie, pero no cubre todo. Cualquier encabezado personalizado que envíe, como una X-API-Key, seguirá siendo reenviado durante una redirección, filtrando potencialmente credenciales sensibles. Para protegerlos realmente, debe deshabilitar las redirecciones automáticas de PHP configurando la opción de contexto follow_location en false para file_get_contents.

Implementar su propia lógica de redirección segura requiere pasos cuidadosos. Inspeccione manualmente la respuesta HTTP para detectar un código de estado 30x. Si ocurre una redirección, extraiga el encabezado Location para obtener la nueva URL. Es crucial validar el dominio de esta nueva URL contra su lista de confianza antes de iniciar una nueva solicitud. Esta nueva solicitud debe excluir explícitamente cualquier encabezado personalizado confidencial, asegurando que sus credenciales nunca lleguen a un destino no deseado. Para obtener más contexto sobre correcciones relacionadas, consulte CVE-2026-91766: PHP had the redirect credential leak curl fixed in 2018.

¿Te está gustando? Recibe uno así en tu bandeja cada mañana.

un correo al día · date de baja en dos clics · sin rastreadores de terceros

El nuevo capítulo de seguridad de PHP

La persistencia durante dos décadas de este error de redirección en PHP ofrece una lección clara sobre las complejidades de mantener lenguajes maduros. Las funcionalidades principales, como file_get_contents, integradas profundamente durante años, pueden albergar vulnerabilidades sutiles que eluden la detección incluso a medida que el lenguaje evoluciona. Descubrir y solucionar problemas desde 2003 muestra ahora el inmenso desafío de garantizar la seguridad en una base de código vasta y de larga duración.

A pesar de las narrativas perennes de que "PHP ha muerto", esta corrección crucial para las versiones 8.2 a 8.5 subraya el desarrollo vibrante y continuo del lenguaje. Modern PHP, particularmente con marcos robustos como Laravel, ofrece constantemente aplicaciones de alta calidad, lo que demuestra su relevancia duradera. Su poderoso ecosistema, con bibliotecas como Guzzle que manejan las redirecciones de forma segura por defecto, a menudo proporciona salvaguardas integradas.

En última instancia, la comunidad de PHP demostró su compromiso inquebrantable con la modernización y la seguridad del lenguaje con este parche. Abordar una vulnerabilidad heredada que abarca dos décadas refuerza la confianza y muestra mejoras de seguridad proactivas. Esta dedicación garantiza que PHP siga siendo una opción poderosa y relevante para el desarrollo web, adaptándose constantemente a nuevos panoramas de seguridad y construyendo una base más sólida para el futuro.

Preguntas frecuentes

¿Qué fue el error de fuga del encabezado de autorización de PHP?

Durante más de 20 años, funciones de PHP como file_get_contents seguían automáticamente las redirecciones HTTP y reenviaban encabezados confidenciales, como Authorization, al nuevo destino. Esto podía ocurrir incluso si la redirección era a un servidor diferente o de HTTPS seguro a HTTP inseguro.

¿Qué versiones de PHP tienen la corrección?

El parche está disponible en las últimas versiones para PHP 8.2, 8.3, 8.4 y 8.5. Debe actualizar a la última versión del parche dentro de estas series para estar protegido.

¿El nuevo parche de PHP soluciona todas las fugas de encabezados?

No. La corrección oficial solo elimina los encabezados estándar Authorization y Cookie durante las redirecciones entre dominios. Los encabezados personalizados, como X-Api-Key, no se eliminan y seguirán filtrándose.

¿Se vio afectado Laravel por este error de PHP?

No. El cliente HTTP predeterminado de Laravel se basa en Guzzle, que implementa su propia lógica de manejo de redirecciones más segura. Guzzle no reenvía encabezados confidenciales a hosts diferentes, por lo que las aplicaciones de Laravel no eran vulnerables a este problema específico.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only

Para builders

Esta página está trabajando para la herramienta de otro.

La leen los agentes de IA. Aterrizan compradores. Responde en ocho idiomas y vía MCP. Tu herramienta puede tener una igual — publicada en 24 horas.