Ekstensi PHP yang digunakan untuk mendeteksi kode XSS (string ternoda), dan juga dapat digunakan untuk melihat kerentanan injeksi SQL, suntikan shell, dll.
Idenya adalah dari https://wiki.php.net/rfc/taint, saya mengimplementasikannya dalam ekstensi PHP yang membuat tambalan tidak dibutuhkan.
Harap dicatat bahwa tidak mengaktifkan ekstensi ini di Product Env, karena akan memperlambat aplikasi Anda.
Karena komplikasi implementasi php8.0, noda tidak akan kompatibel dengan php8.0+.
Noda adalah ekstensi PECL, sehingga Anda dapat menginstalnya dengan:
pecl install taint
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
Saat ternoda diaktifkan, jika Anda melewati string yang ternoda (berasal dari $ _get, $ _post atau $ _cookie) ke beberapa fungsi, Taint akan memperingatkan Anda tentang itu.
<?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 );Contoh di atas akan menghasilkan sesuatu yang mirip dengan:
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
Jika Anda perlu menyembunyikan kesalahan untuk skrip tertentu, Anda dapat:
ini_set('taint.error_level', 0);