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