Saltar al contenido principal

Código Correcto

Es esencial reservar la ejecución de comandos a nivel de máquina como último recurso durante el desarrollo de aplicaciones. Sin embargo, en caso de ser necesario, resulta crucial extremar las precauciones con los parámetros que se les pasa a estos comandos. Esto implica filtrar exhaustivamente toda entrada de datos y verificar minuciosamente su validez, especialmente cuando provienen de usuarios externos.

Por ejemplo, en el código que maneja el ping en el nivel de seguridad más alto, se adopta un enfoque prudente. Primero, se descompone la dirección IP proporcionada en sus componentes individuales, conocidos como octetos. Luego, se verifica cada uno de estos octetos por separado para asegurarse de que contengan únicamente valores numéricos. Finalmente, se reensambla la dirección IP. Este proceso garantiza que la dirección IP utilizada sea un dato válido y confiable antes de proceder con cualquier operación adicional.

Este enfoque riguroso de verificación de datos es esencial para mantener la integridad y seguridad de las aplicaciones, especialmente en entornos donde la ejecución de comandos de sistema operativo es una necesidad. Al seguir este tipo de buenas prácticas de desarrollo seguro, se reduce significativamente el riesgo de vulnerabilidades y se fortalece la robustez del sistema contra posibles ataques.

Si observamos el código del ping en el nivel imposible, se descompone la dirección IP, se verifica cada parte por separado y luego se vuelve a armar la IP. De esta manera, nos aseguramos de que sea un dato válido.

$target = stripslashes($target);

// Dividir la IP en 4 octetos
$octets = explode(".", $target);

// Verificar si cada octeto es un número entero y si hay exactamente 4 octetos
if (count($octets) == 4 && ctype_digit($octets[0]) && ctype_digit($octets[1]) && ctype_digit($octets[2]) && ctype_digit($octets[3])) {
// Si los 4 octetos son enteros, vuelva a armar la IP.
$target = implode('.', $octets);
} else {
// Si la IP no es válida, manejar el error o tomar medidas apropiadas.
// Por ejemplo, registrar el intento de ataque o mostrar un mensaje de error.
die("Dirección IP no válida.");
}