汚染検出モードについて、The sky is the limit! | セキュア・プログラミング講座/セキュア Perl プログラミングがまとまっている感じ。注意しなければいけないことは、汚染フラグは正規表現で変数の内容をフィルタすることで下ろせるが、フィルタした正規表現の妥当性についてはチェックしてくれないと言うことか。あと、perlsec - Perl のセキュリティのあたりも面白い。変数が汚染されているかどうかをチェックするには、Scalar::Utilのtainted()を使うか、is_tainted()サブルーチンを作れ。と言うことか。
汚染を洗浄するためにどうすればいいのかということで、CERT/CC Understanding Malicious Content Mitigation For Web Developersに載っているサンプルは使えるかもしれない。だめなものを削除するNegativeフィルタとよいものを抽出するPositiveフィルタの2つが載っている。洗浄はそれぞれの変数に対して適当なものを使うべきで、どちらのフィルタを使うにしても、その場その場で異なった洗浄が必要になると思う。