Chapter 44. 入力データの検査

Table of Contents
入力データ検査についての概要
FML::Restriction クラス
CGI における入力データの制限
議論: FML::Restriction の制限はきびし過ぎるか?

当然、 入力データ(特にコマンドなど)に対する正当性の検査( input validation ) が行なわれています。

全プログラムで統一された検査を行なうため、 FML::Restriction クラスに基づいて検査が行なわれます。

入力データ検査についての概要

投稿メールに対して

そもそも記事に対する入力制限(入力データの表現範囲の制限)というものは考 えにくい概念です。 実際 FML::Restriction クラスによる入力データチェックは行なわれていません。

Caution

(SPAM であろうと思われる)一行メールなどをはじくために FML::Filter クラスによるフィルタチェックが行なわれ得ます。

ただし、これは記事の内容に対するチェックではないので、 FML::Restriction の対象としている操作とは意味合いが異なります。

コマンドメールに対して

コマンドメールは FML::Process::Command の中で一行ずつ FML::Restriction::Command で定義されている正規表現にしたがって 入力されたコマンド列が検査されます。検査に合格すれば、 FML::Command::{User,Admin}::コマンド の実行に進むことができます。

CGI に対して

CGI の各プログラムでは、safe_param_XXX() という関数経由でのみ HTTP セッションからのデータを受けとることができます。

safe_param_*() および try_cgi_*() は安全な値を返すことになっています。

これらの safe_param_XXX() は FML::Restriction::CGI ( FML::Restriction::Base を継承している)経由でパターンの検査をし、 検査に合格した場合にのみ値が返されています。

makefml および fml

コマンドラインで実行する(シェルの上での操作が可能である)ので 「入力チェックをしない」のがデフォルトです。 つまり、そのシェルが取れる時点で正規のユーザであると認証されているはず なので「正しいユーザ/そのユーザのすることはすべて正しい」と信じています。

もちろん、各モジュールごとの制限は受けます。 たとえば、adduser でアドレスを追加しようとしても、 正しいアドレスに見えないような文字列を入れれば拒否されます。 このあたりの制限は各モジュール依存です。

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.