Perl コードでイベント ハンドラーを作成して、すべてのファイル/ディレクトリ/システム ベースの呼び出しをインターセプトし、ジャスト イン タイムで入力の汚染を除去するにはどうすればよいですか。
スクリプトには多くの IO アクセスがあり、汚染を除去するための手動コードを追加するのは面倒です。
これは、サードパーティの CPAN モジュールをインストールする必要なく実行できますか?
Perl コードでイベント ハンドラーを作成して、すべてのファイル/ディレクトリ/システム ベースの呼び出しをインターセプトし、ジャスト イン タイムで入力の汚染を除去するにはどうすればよいですか。
スクリプトには多くの IO アクセスがあり、汚染を除去するための手動コードを追加するのは面倒です。
これは、サードパーティの CPAN モジュールをインストールする必要なく実行できますか?
アスペクト指向のアプローチを試すこともできますが、CPAN モジュールAspectをインストールする必要があります。
特定のメソッド/関数への呼び出しをキャプチャするには、ポイントカット (アスペクト POD から取得) を定義します。
$pointcut = call qr/^Person::[gs]et_/; # defines a collection of events
次に、呼び出しの前に実行するコードを定義します。
$before = before {
print "g/set will soon be called";
} $pointcut;
Aspect モジュールで CORE::* 名前空間への呼び出しをトラップできるかどうかはわかりませんが。
一般的なデータをどのように untained することを期待しますか? ソースに関係なくすべてを盲目的に受け入れる場合は、汚染チェックを使用しても意味がありません。
Mastering Perlの「Secure Programming Techniques」の章を読みたいと思うかもしれません。この種の問題に対処するためのかなりのアドバイスをします。ただし、適切なアドバイスは、一般化ではなく、特定の状況に的を絞ったものになります。