6.3. データと制御を切り離す

サポートするどんなファイルに対しても、(外から来る)データとそれを実行する プログラムを完全に分けて設計してください。 アプリケーションやデータを見るビューアーは、外部で作成したファイルを表示する 場合によく使われるので、それらがファイルをプログラム(「スクリプト」とか 「マクロ」と言われています)として受け付けないようにしてください。 最も危険なのは、自動実行マクロです。これは、アプリケーションがロードしたり、 データを最初に表示したりした時に動作してしまいます。セキュリティの観点から すると、これは災難が起こるのを待っているようなものです。

離れたところからダウンロードする機能をプログラムできちんとサポートしなければ いけないなら(たとえば、既存のシステムに実装するため)、マクロの動作に必ずきつい 制限をかけなければいけません(これを「サンドボックス」と呼んでいます)。 経験上、サンドボックスを本当に正しく実装するのは困難です。 実際、単独で広範に利用されたサンドボックスの中で、再三に渡って破られなかった ものは記憶にありません(もちろん、Java も含めて)。 可能なら、少なくともプログラムを独立したファイルに収めてください。そうすれば、 他のサンドボックスに欠点が見つかりそれが修正されなくても、簡単にブロック できるからです。 また独立にしておくことで、コードの再利用が容易になり、役立つ時に身近で利用 できます。