taint
1.0.0
用于检测XSS代码(污染的字符串)的PHP扩展名,也可用于发现SQL注入漏洞,外壳注入等。
这个想法来自https://wiki.php.net/rfc/taint,我以PHP扩展为实现,这使补丁不需要。
请注意,由于它将减慢您的应用程序,因此不能在产品ENV中启用此扩展名。
由于PHP8.0实施的并发症,Taint不会与PHP8.0+兼容。
Taint是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);