Extensión PHP utilizada para detectar códigos XSS (cadena contaminada), y también se puede usar para detectar vulnerabilidades de inyección SQL, inyección de concha, etc.
La idea es de https://wiki.php.net/rfc/taint, la implementé en una extensión de PHP que hace que el parche no sea necesario.
Tenga en cuenta que no habilite esta extensión en el envío del producto, ya que ralentizará su aplicación.
Debido a la complicación de la implementación de Php8.0, la Taint no será compatible con Php8.0+.
Taint es una extensión PECL, por lo que simplemente puede instalarla por:
pecl install taint
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
Cuando Taint está habilitado, si pasa una cadena contaminada (proviene de $ _get, $ _post o $ _cookie) a algunas funciones, Taint le advertirá sobre eso.
<?php
$ a = trim ( $ _GET [ ' a ' ]);
$ file_name = ' /tmp ' . $ a ;
$ output = " Welcome, { $ a } !!! " ;
$ var = " output " ;
$ sql = " Select * from " . $ a ;
$ sql .= " ooxx " ;
echo $ output ;
print $ $ var ;
include ( $ file_name );
mysql_query ( $ sql );El ejemplo anterior generará algo similar a:
Warning: main() [function.echo]: Attempt to echo a string that might be tainted
Warning: main() [function.echo]: Attempt to print a string that might be tainted
Warning: include() [function.include]: File path contains data that might be tainted
Warning: mysql_query() [function.mysql-query]: SQL statement contains data that might be tainted
Si necesita ocultar los errores para un script en particular, puede:
ini_set('taint.error_level', 0);