制限 FML::Restriction クラス 入力データや、 コマンドの ACL は FML::Restriction クラス以下にモジュールを配置することにしています。 例えば、CGI では FML::Restriction::CGI クラスのモジュールを用いて 入力データがある正規表現の中に収まるかどうか?の検査をしています。 FML::Restriction 以下では Base を継承したりしますが、 他のモジュールでは、FML::Restriction クラスを object composition として使って下さい。 例えば、 use FML::Restriction::CGI; $safe = new FML::Restriction::CGI; my $allowed_regexp = $safe->param_regexp(); if ($value =~ /^$allowed_regexp{$key}$) { ... ok, do something ... ;} のように使います。 CGI における入力データの制限 CGI では FML::Restriction::CGI クラスのモジュールを用いて 入力データがある正規表現の中に収まるかどうか?の検査をします。 入力値は、前述のクラスの入力制限をうけるべきです。 そのため、直接 param() を使ってはいけません。 必ず safe_param_xxx() メソッドを通じてのみ、 param() ( CGI モジュール )からのデータ入力をして下さい。 なお、入力されたキーワード一覧を調べるために、 for my $dirty_buf (param()) { ... check ... } のような構文は許す必要はあるでしょうが、 param($dirtty_buf) などとはしてはいけません。必ず for my $key (param()) { ... check ... if (key eq $key) { value = safe_param_key() } } のように書いて下さい。