A extensão do PHP usada para detectar códigos XSS (corda contaminada) e também pode ser usada para detectar vulnerabilidades de injeção de SQL, injeção de shell, etc.
A idéia é de https://wiki.php.net/rfc/taint, implementei-a em uma extensão PHP que torna o patch sem necessidade.
Observe que não habilite essa extensão no produto ENV, pois ele desacelerará seu aplicativo.
Devido à complicação da implementação de Php8.0, a Taint não será compatível com Php8.0+.
Taint é uma extensão PECL, portanto você pode simplesmente instalá -lo por:
pecl install taint
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
Quando a Taint estiver ativada, se você passar por uma sequência contaminada (vem de $ _Get, $ _Post ou $ _Cookie) para algumas funções, Taint o avisará sobre isso.
<?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 );O exemplo acima produzirá algo semelhante 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
Se você precisar ocultar os erros para um script específico, você pode:
ini_set('taint.error_level', 0);