Taint 소개

Taint는 XSS 코드(tainted string)를 감지하는 데 사용되는 확장 프로그램입니다. 그리고 SQL 인젝션 취약점, 쉘 인젝션 등을 찾아내는 데에도 사용할 수 있습니다.

taint가 활성화되어 있을 때 오염된 문자열($_GET, $_POST 또는 $_COOKIE에서 가져옴)을 일부 함수에 전달하면 taint가 이에 대해 경고합니다.

예제 #1 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