PHP 8.6.0 Beta 3 is available for testing

Taint

Introducción

Taint es una extensión para detectar código XSS (strings corrompidos, «tainted»). También puede utilizarse para localizar inyecciones SQL, inyecciones de comandos, inyecciones de rutas de ficheros y vulnerabilidades similares.

Cuando taint está habilitada, los strings recibidos de la entrada del usuario — $_GET, $_POST y $_COOKIE — se marcan como corrompidos al inicio de la petición, y la marca se propaga a través de las operaciones con strings. Cuando un string corrompido alcanza un punto peligroso (salida, consulta SQL, comando del sistema, ruta de fichero, ...), taint emite una advertencia que señala ese punto. Consulte Propagación y puntos comprobados para ver las listas completas.

Taint es una herramienta de desarrollo y auditoría, no una defensa en tiempo de ejecución: solo informa de posibles problemas, y nunca bloquea ni altera los datos. Es deliberadamente conservadora y puede informar de más de la cuenta, de modo que una ejecución limpia solo significa «nada que taint pudiera ver», nunca «demostrablemente seguro». No la habilite en entornos de producción.

Ejemplo #1 Ejemplo de taint

<?php
$a = trim($_GET['a']);

$file_name = '/tmp/' . $a;
$output    = "Welcome, {$a} !!!";
$sql       = "SELECT * FROM users WHERE name = " . $a;

echo $output;
print $output;
include $file_name;
mysqli_query($link, $sql);
?>

Resultado del ejemplo anterior es similar a:

Warning: main() [echo]: Attempt to echo a string that might be tainted in /path/to/script.php on line 9

Warning: main() [print]: Attempt to print a string that might be tainted in /path/to/script.php on line 10

Warning: main() [include]: File path contains data that might be tainted in /path/to/script.php on line 11

Warning: main() [mysqli_query]: SQL statement contains data that might be tainted in /path/to/script.php on line 12
add a note

User Contributed Notes 1 note

up
3
dewi at dewimorgan dot com
8 years ago
Latest compatibility info is available at the pecl page - https://pecl.php.net/package/taint shows that latest compatibility is 7+, and a windows DLL is available.
To Top