Estoy pensando en agregar acortamiento de URL a mi sitio.
Digamos que mi base de datos ya ha almacenado url
como una cadena simple, esta información fue proporcionada por el usuario y es arbitraria.
Por lo tanto, una implementación ingenua en PHP podría verse un poco como esta
$url = lookup_url ($_POST['url_id']);
if (null !== $url)
{
header ("Location: ".encode_url($url));
exit ();
}
con un encode_url adecuado para garantizar los datos proporcionados por el usuario se limitan al encabezado Location
y no se filtran en el resto de la respuesta HTTP ni se insertan en la base de datos o lo que sea.
¿Existe alguna vulnerabilidad de seguridad al redireccionar a una URL arbitraria suministrada por el usuario?
EDIT para aclarar, en respuesta a la observación sensata de @ UTF-8: asuma que el usuario no interactúa directamente con la página a la que está redirigido. ¿Puede un atacante romper mi seguridad si el usuario sigue el enlace y no hace nada más?