taint
1.0.0
XSSコード(汚染された文字列)の検出に使用されるPHP拡張機能と、SQLインジェクションの脆弱性、シェル注入などを見つけるためにも使用できます。
アイデアはhttps://wiki.php.net/rfc/taintからのもので、パッチを必要としないPHP拡張子に実装しました。
アプリが減速するため、この拡張子は製品Envでこの拡張機能を有効にしないでください。
PHP8.0の実装の合併症のため、汚染はphp8.0+と互換性がありません。
TaintはPECL拡張機能です。したがって、以下でインストールするだけでインストールできます。
pecl install taint
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
汚染が有効になっている場合、汚染された文字列($ _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);