System Requirements
このページでは KARAS を導入するシステムが満たすべき条件と、推奨する条件について解説します。
文字エンコ―ディング
KARAS の標準のコンバータは、UTF-8 環境で利用するように設計されています。それ以外の文字エンコーディングは考慮していません。したがって、標準のコンバータを用いて KARAS を導入する場合には、システムの文字エンコ―ディングを UTF-8 に設定する必要があります。
もしも UTF-8 以外のエンコーディングで動作しても、他の異なる環境で、動作することは保障されません。特にマルチバイト文字を使う場合には、不具合を起こす可能性があります。
メディアリンクの処理
KARAS のコンバータは、画像、音声、動画、などのメディアを出力するためのリンクを適切な形式に変換する必要があります。KARAS を導入するシステムの開発者は、この仕組みを実装する必要があります。またその出力結果の例は、そのシステムのユーザに示されるべきです。特に、標準のコンバータが出力する結果と異なる結果を出力するときはより重要です。
例えば、標準のコンバータは、 video や audio 要素を使います。あなたは、それを Flash を利用する形式に変更することができます。ただし、その出力結果の例をユーザに示すことが必要です。
KARAS によって書かれるドキュメントの最終的なフォーマットや、そのドキュメントを読むための環境は定義されていません。 例えば、EPUB かもしれないし、PDF かもしれません。システムの開発者は、それぞれの環境で、それぞれのメディアに対して最適なプレイヤを出力できるように、システムを開発する必要があります。
セキュリティの問題
KARAS の標準的な出力フォーマットは HTML です。HTML は Javascript などの任意のスクリプトを実行する機能を持っています。また object 要素や、 iframe 要素のような、外部のプログラムやページを実行する機能も持っています。Wiki のような不明瞭で権限のないユーザがページを編集できるようなシステムでは、悪意のあるユーザが、悪質なスクリプトやタグ、URL を埋め込む危険性があります。KARAS を導入するシステムの開発者は、この点に十分に注意する必要があります。
許可されたユーザのみが KARAS を利用するときは、HTML を挿入するための仕組みは大変便利です。しかしながら、不特定多数のユーザが KARAS を利用するようなシステムは、サニタイズ (sanitize/sanitization) が必要です。サニタイズに関する技術的な詳細はここでは解説しません。
また、オプションを持つ構文に注意してください。例えばリンク構文、グループ構文などで、特にプラグイン構文には注意が必要です。オプションを利用することで、ユーザは任意のコードを埋め込むことができます。
Plugin に注意する
プラグインの開発や導入には注意が必要です。プラグインの開発者は、そのプラグインが任意の(悪意ある)コードを挿入できる場合には、そのことを示さなければいけません。配布されるプラグインを導入する場合には、そのプラグインが悪意のあるコードを出力するかどうか確認したほうが良いでしょう。また未知のユーザが利用するようなシステムの場合には、そのプラグインによって悪意のあるコードを埋め込むことができるかどうか、検証する必要があります。
セキュリティのヒント
KARAS を Wiki などのパブリックなシステムで使うとき、次のようなセキュリティ対策が考えられます。セキュリティレベルが高いほど、セキュリティは強くなります。
- ユーザに一部の HTML 要素を挿入させない。
- 挿入された HTML テキストをエスケープする。
- 挿入された HTML テキストを削除する。
- ユーザにすべての HTML を挿入させない。
- 挿入された HTML をエスケープする。
- 挿入された HTML を削除する。
- リンクを持ったすべての HTML を削除する。
- KARAS の構文を使ったリンクの出力もそれに含まれる。
- a, img, video, object, embed, etc…
またこれらの処理に加えて、Javascript などの危険なテキストの埋め込みを回避する必要があります。