PHP - Escapar URL para header location

 
Vista:

Escapar URL para header location

Publicado por Sr.Linares (1 intervención) el 04/04/2019 02:23:04
Hola,

Quiero redireccionar a páginas externas con PHP y lo hago de esta manera:

1
2
3
4
<?php
header('Location: '.$_GET['url']);
exit;
?>

Esto, en mi opinión es vulnerable.. No estoy seguro, pero yo diría que sí... Quiero saber cómo puedo validar de forma segura este código.

Pensé en utilizar filter_var($url, FILTER_VALIDATE_URL) en la variable $_GET pero he leído en un blog que de igual manera sería vulnerable.

¿Cuál es la forma correcta...?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Escapar URL para header location

Publicado por italo_pm (193 intervenciones) el 04/04/2019 10:59:07
Hola, normalmente aconsejan a manera de prevencion, que se defina un array con los dominios permitidos.

1
2
3
4
5
6
//You can also match a whitelist of domains that you owned as per the following code:
 
$domains = [‘abc.example.com’, ‘foo.bar.com’];
if ( ! in_array($_SERVER[‘SERVER_NAME’], $domains)) {
// Si no esta dentro de la lista de dominios, escribo la accion por hacer.
}

o el contrario, si es que esta presente en el array, realizas el header Location.

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar