VULNERABILIDADES DE APLICACIONES WEB: ABUSO DE REDIRECTOR DE URL (II)

27.12.2017 10:45
Veremos otra forma de prevenir esta vulnerabilidad.
 
Si no se puede evitar el ingreso de parámetros por parte del usuario se recomienda asignar a esa entrada un valor, en lugar de la URL real o parte de la URL. Del lado del servidor dicho valor se traducirá a la URL a la que se desea redirigir:
 
<html>
<h1>Bienvenido a la Entidad Cualquiera</h1>
<pre>
Usted sera redirigido a nuestra página de ingreso
de datos personales. 
</pre>
 
<form action="no-vulnerable.php" method="get">
   <select name="opcion">
      <option value="Centro">Sucursal Centro</option>
      <option value="Sur">Sucursal Sur</option>
      <option value="Norte">Sucursal Norte</option>
   </select>
   <input type="submit">
</form>
</html>
 
Del lado del servidor tendremos "no-vulnerable.php" con un código como éste:
 
<?php
$opcion = $_GET['opcion'];
if ($opcion == "Centro") {
    header("Location: https://entidadcualquiera.com/sc.html");
} elseif ($opcion == "Sur") {
    header("Location: https://entidadcualquiera.com/ss.html");
} elseif ($opcion == "Norte") {
    header("Location: https://entidadcualquiera.com/sn.html");
} else {
    header("Location: adelante2.php");
}
?>
 
Hemos simplificado el código de arriba para que sea fácilmente comprendido. En la práctica fuerce todos los redireccionamientos para que pasen por una página que notifique a los usuarios que se están desviando de su sitio y solicíteles que hagan clic en un enlace para confirmar que aceptan ser redireccionados.
 
Artículo relacionado: