En redir.php:
header("Location: {$_GET['addr']}");
Para corregir la vulnerabilidad de redireccionamiento abierto, se me ocurren varias maneras:
1- (Efecto secundario de) Uso de un token de seguridad (token anti-csrf):
if(!isset($_SESSION['anticsrf_token'], $_GET['anticsrf_token']) or $_SESSION['anticsrf_token']!==$_GET['anticsrf_token']) exit('...');
Esto debería funcionar porque un atacante no puede saber y no puede crear un token anti-csrf válido.
2- Comparando el dominio de 'redirect to address' con el del script (redir.php) en sí ($ _SERVER ['HTTP_HOST']).
3- El 'redireccionamiento a la dirección' puede almacenarse primero en el script de referencia (el script que contiene el enlace a redir.php) en $ _SESSION y luego redir.php actúa solo en esa sesión var:
header("Location: {$_SESSION['redir2addr']}");
También se puede utilizar una cookie en lugar de una sesión.
También puedo pensar en otras formas, pero parece que una de estas es suficiente para mi propia aplicación. Apreciaré cualquier idea y tengo que saber o pensar.