taint

Taint is a PHP extension, used for detecting XSS codes

Github stars Tracking Chart

Taint

Build Status

php extension used to detect XSS codes(tainted string), And also can be used to spot sql injection vulnerabilities, shell inject, etc.

The idea is from https://wiki.php.net/rfc/taint, I implemented it in a php extension which make the patch no-needed.

Please note that do not enable this extension in product env, since it will slowdown your app.

Requirement

  • PHP-5.2 +

Install

taint is an PECL extension, thus you can simply install it by:

pecl install taint

Compile taint in Linux

$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install

Usage

When taint is enabled, if you pass a tainted string(comes from $_GET, $_POST or $_COOKIE) to some functions, taint will warn you about that.

<?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);

The above example will output something similar to:

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

If you need to hide the errors for a particular script, you can:

ini_set('taint.error_level', 0);

Main metrics

Overview
Name With Ownerlaruence/taint
Primary LanguageC
Program languagePHP (Language Count: 5)
Platform
License:Other
所有者活动
Created At2012-02-13 11:33:43
Pushed At2024-07-01 04:24:46
Last Commit At2024-07-01 12:24:46
Release Count11
Last Release Nametaint-2.1.0 (Posted on )
First Release Nametaint-1.2.0 (Posted on )
用户参与
Stargazers Count614
Watchers Count44
Fork Count128
Commits Count187
Has Issues Enabled
Issues Count49
Issue Open Count17
Pull Requests Count15
Pull Requests Open Count3
Pull Requests Close Count10
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private