es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Escapar de manera segura una cadena antes de EVAL()

Lo que quiero hacer es lo siguiente:

Habrá un archivo de configuración externo que contiene:

RunCommand = "SomePHPCommand($SomeVariable)"

Pero el archivo de configuración:

$SomeVariable = GetFromWebCall();  //Obtenido externamente, debe ser seguro

$PHPCommand = LoadFromConfig(RunCommand)  //Obtenido externamente pero en un entorno controlado y seguro, no es necesario limpiar

result = eval($PHPCommand)

En resumen, el archivo de configuración es SEGURO. Pero $SomeVariable podría contener algo malicioso y necesito planificar eso.

¿Cómo puedo escapar de manera segura el $SomeVariable antes de ejecutar mi comando eval?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para escapar de forma segura la variable $SomeVariable antes de ejecutar el comando eval, debes utilizar la función interna de PHP llamada “htmlspecialchars” o “htmlentities”. Estas funciones convierten ciertos caracteres en sus equivalentes en HTML, evitando así ataques de inyección de código.

    Aquí tienes un ejemplo de cómo podrías utilizar htmlspecialchars en tu fragmento de código:

    $SomeVariable = htmlspecialchars(GetFromWebCall(), ENT_QUOTES, 'UTF-8');
    // El segundo parámetro especifica qué caracteres deben convertirse.
    // El tercer parámetro especifica la codificación de caracteres.
    
    $PHPCommand = LoadFromConfig(RunCommand);
    $resultado = eval($PHPCommand);
    

    Al utilizar htmlspecialchars para escapar del valor de $SomeVariable, te aseguras de que cualquier carácter potencialmente malicioso se convierta en su equivalente seguro en HTML. Esto ayuda a prevenir ataques de inyección de código y garantiza que tu aplicación permanezca segura.

Comments are closed.