# Taint

# はじめに

taint は、XSS コード (汚染された文字列) を検出するための拡張モジュールです。 SQL インジェクションやシェルコマンドインジェクションなどの脆弱性を検出するためにも使えます。

taint を有効にすると、汚染された文字列 ($_GET, $_POST, $_COOKIE に由来するもの) を何かの関数に渡そうとしたときに警告を出すようになります。

例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

- インストール/設定
  - 要件
  - インストール手順
  - 実行時設定
- 詳細
  - 汚染された文字列の汚染マークを広げる関数や文
  - 汚染された文字列をチェックする関数や文
  - 文字列の汚染を除去する関数
- Taint 関数
  - is_tainted — 文字列が汚染されているかどうかを調べる
  - taint — 文字列を汚染させる
  - untaint — 文字列の汚染を除去する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open