Extension PHP utilisée pour détecter les codes XSS (chaîne contaminée), et peut également être utilisée pour repérer les vulnérabilités d'injection SQL, l'injection de la coquille, etc.
L'idée provient de https://wiki.php.net/rfc/taint, je l'ai implémentée dans une extension PHP qui rend le correctif qui a besoin.
Veuillez noter que cela n'activait pas cette extension dans Product Env, car elle ralentira votre application.
En raison de la complication de la mise en œuvre de PHP8.0, Taint ne sera pas compatible avec PHP8.0 +.
Taint est une extension PECL, vous pouvez donc simplement l'installer par:
pecl install taint
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
Lorsque Taint est activé, si vous passez une chaîne entachée (vient de $ _get, $ _post ou $ _cookie) à certaines fonctions, Taint vous en avertira.
<?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 );L'exemple ci-dessus sortira quelque chose de similaire à:
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 vous devez masquer les erreurs pour un script particulier, vous pouvez:
ini_set('taint.error_level', 0);