当然、 入力データ(特にコマンドなど)に対する正当性の検査( input validation ) が行なわれています。
全プログラムで統一された検査を行なうため、 FML::Restriction クラスに基づいて検査が行なわれます。
そもそも、 記事に対する入力制限(入力データの表現範囲の制限)は考えにくい概念です。 実際 FML::Restriction クラスによる入力データチェックは行なわれていません。
Caution |
(SPAM であろうと思われる)一行メールなどをはじくために FML::Filter クラスによるフィルタチェックが行なわれ得ます。 ただし、これは記事の内容に対するチェックではないので、 FML::Restriction の対象としている操作とは意味合いが異なります。 |
コマンドメールは FML::Process::Command の中で一行ずつ FML::Restriction::Command で定義されている正規表現にしたがって入力されたコマンド列が検査されます。 検査に合格すれば、 FML::Command::{User,Admin}::コマンドの実行に進むことができます。
CGI の各プログラムでは、 safe_param_XXX() という関数経由でのみ HTTP セッションからのデータを受けとることができます。
safe_param_*() および try_cgi_*() は安全な値を返すことになっています。
これらの safe_param_XXX() は FML::Restriction::CGI (FML::Restriction::Base を継承している) 経由でパターンの検査をし、 検査に合格した場合にのみ値が返されています。
コマンドラインで実行する(シェルの上での操作が可能である)ので 「入力チェックをしない」 のがデフォルトです。 サーバのシェルが取れる時点で、正規のユーザであると認証されているはずです。 「正しいユーザ/そのユーザのすることはすべて正しい」と信じています。
もちろん、各モジュールごとの制限は受けます。 たとえば、adduser でアドレスを追加しようとしても、 正しいアドレスに見えないような文字列を入れれば拒否されます。 このあたりの制限は各モジュール依存です。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >