No creo que exista un riesgo para una vulnerabilidad de redireccionamiento abierta, ya que cualquier cosa después de ?
se interpretará como parámetros de consulta y no como parte de la ruta. Pero debe cambiar su código de todos modos, ya que no se asegura de que el param
esté realmente codificado en URL. Haga esto con urlencode()
:
header('Location: ../page.php?param='.urlencode($param));
Sin embargo, si usa una versión de PHP anterior a 5.1.2, es vulnerable a la inyección de cabecera (consulte documentación ). Al enviar un param
que incluye una nueva línea, un atacante podría establecer múltiples encabezados (o simplemente establecer el encabezado de ubicación nuevamente, sobrescribiendo el valor anterior). El uso de urlencode()
corrige que dado que \n
se codificaría como %0A
.
Sin embargo, todo el constructo podría ser innecesario. Tal vez solo puedas verificar $_POST
y $_GET
para param
en page.php
?