Расширение PHP, используемое для обнаружения кодов XSS (испорченная строка), а также может использоваться для определения уязвимостей инъекции SQL, инъекции оболочки и т. Д.
Идея от https://wiki.php.net/rfc/taint, я реализовал его в расширении PHP, что делает патч без необходимости.
Обратите внимание, что не включайте это расширение в Env Product, так как оно замедлит ваше приложение.
Из -за осложнений реализации PHP8.0 Taint не будет совместимой с PHP8.0+.
Daint - это расширение PECL, таким образом, вы можете просто установить его:
pecl install taint
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
Когда Taint включена, если вы передаете испорченную строку (поставляется из $ _get, $ _post или $ _cookie) к некоторым функциям, Taint предупредит вас об этом.
<?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 );Приведенный выше пример выведет что -то похожее на:
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
Если вам нужно скрыть ошибки для конкретного сценария, вы можете:
ini_set('taint.error_level', 0);