Lorsqu'une chaîne corrompue atteint l'un des points de sortie ci-dessous,
taint émet un avertissement (par défaut un
E_USER_WARNING ; le niveau est configurable via
taint.error_level). Seuls
les arguments de chaîne de premier niveau sont inspectés ; vider un
tableau qui contient simplement des valeurs corrompues n'émet pas
d'avertissement.
| Point de sortie | Vérifié |
|---|---|
echo, print |
l'expression affichée |
| printf(), vprintf() | la chaîne de format et les valeurs substituées |
| print_r(), var_dump(), var_export() | la valeur vidée, quand c'est une chaîne |
exit/die avec un message |
le message |
file_put_contents(), fwrite(), fputs() vers php://output |
les données écrites |
| Point de sortie | Vérifié |
|---|---|
| fopen(), opendir(), unlink() | le chemin |
| file(), readfile(), file_get_contents(), highlight_file()/show_source() | le chemin |
| copy(), rename(), move_uploaded_file() | les chemins source et destination |
| mkdir(), rmdir(), touch() | le chemin |
include, include_once, require, require_once |
le chemin du fichier |
| Point de sortie | Vérifié |
|---|---|
| mysqli_query(), mysqli_prepare(), mysqli_real_query(), mysqli_multi_query() | la chaîne de requête |
| mysql_query(), sqlite_query(), sqlite_single_query(), oci_parse(), pg_query(), pg_send_query() | la chaîne de requête |
| mysqli::query(), mysqli::prepare(), mysqli::real_query(), mysqli::multi_query() | la chaîne de requête |
| PDO::query(), PDO::prepare(), PDO::exec() | la chaîne de requête |
| SQLite3::query(), SQLite3::prepare(), SQLite3::exec(), SQLiteDatabase::query(), SQLiteDatabase::singleQuery() | la chaîne de requête |
| Point de sortie | Vérifié |
|---|---|
| exec(), system(), passthru(), shell_exec() (y compris l'opérateur backtick) | la chaîne de commande |
| proc_open(), popen() | la chaîne de commande |
eval |
le code évalué |
les appels dynamiques tels que $func(), $obj->$method(), call_user_func(), les callables tableaux |
le nom de fonction/méthode/classe en cours de résolution |
| preg_match(), preg_match_all(), preg_replace(), preg_split(), preg_grep(), preg_replace_callback() | le motif (et le nom du callback pour preg_replace_callback()) |
| Point de sortie | Vérifié |
|---|---|
| header() | la chaîne d'en-tête |
| setcookie(), setrawcookie() | le nom et la valeur du cookie |
| Point de sortie | Vérifié |
|---|---|
| unserialize() | la chaîne sérialisée |
| mail() | le destinataire, le sujet, les paramètres supplémentaires et les en-têtes supplémentaires (le corps du message est du contenu et n'est pas vérifié) |
Les avertissements suivent le format
function_name() [sink]: message, où
sink identifie l'opération vérifiée (par exemple
echo, include ou le nom de la
fonction) et le message décrit ce qui a été trouvé comme potentiellement
corrompu.