VULNERABILIDADES DE APLICACIONES WEB: ¿CUÁL ES EL ERROR EN ESTA APLICACIÓN? (II)

29.12.2017 07:17
Para los lectores que no se percataron de cuál es el error publicamos el archivo atras.php tal cual estaba:
 
<?php
$usuario = $_POST['usuario'];
$clave = $_POST['clave'];
if (($usuario = 'administrador') && ($clave = 'quieroentrar123')){
  header('Location: administrador.php');
}else{
  header('Location: adelante.php');
}
?>
 
lo que, cualquiera sea el nombre de usuario que se ingrese y cualquiera sea la clave que se ingrese llevará a administrador.php
 
<html>
<h1>Pagina del administrador</h1>
<p>Admin, su clave de acceso es "quieroentrar123"</p>
</html>
 
El archivo atras.php corregido es el siguiente:
 
<?php
$usuario = $_POST['usuario'];
$clave = $_POST['clave'];
if (($usuario == 'administrador') && ($clave == 'quieroentrar123')){
  header('Location: administrador.php');
}else{
  header('Location: adelante.php');
}
?>
 
El error - ya sea de tipeo, provocado por el cansancio, por una distracción o por simple apuro - consite en que en el primer caso se estaba asignando un valor a $usuario y $clave ('=') en lugar de comparar el valor ingresado con el del administrador ('=='). A esta vulnerabilidad se la denomina precisamente USO DE OPERADOR INCORRECTO.
 
Adicionalmente 'quieroentrar123' es una contraseña compuesta sólo por letras minúsculas y números, que figura en el programa, para el colmo sin codificar y que será la misma para cada instalación del producto. Además en determinadas circunstacias podría ser vista por un pirata informático. 
 
Artículo relacionado: