BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Rubyと.NETの安全なユーザー生成テンプレート

Rubyと.NETの安全なユーザー生成テンプレート

原文(投稿日:2011/12/06)へのリンク

ユーザーに多くの権限を与えることにフォーカスしている他のテンプレートエンジンとは違い、Liquidはユーザーができることを制限するように設計されている。ゴールは、サーバーのセキュリティを悪化させることなく、エンドユーザーが彼ら自身のテンプレートを作ることができるようにすることである。

Liquidはもともと、eCommerceプラットフォームであるShopifyとして作られ、2006年から製品利用されている。Tim Jones氏は、このエンジンをDotLiquidという名前で.NETに移植した。どちらのバージョンも、テンプレート以下のプラットフォームにアクセスすることができず安全である。その代わりに、“フィルタ”と呼ばれる主に単純な関数に制限された命令セットと条件ステートメントを利用する。Liquidマークアップシンタックスは、どちらのバージョンも同じだ。

描画テンプレートには、2つのステップがある。最初は、ソースコードが再利用可能なテンプレートオブジェクトにパースされる。そして、必要に応じてテンプレートの描画メソッドが呼ばれる。テンプレートは、Ruby/.NETの変数にはアクセスできず、キー/バリューペアのディクショナリを利用して渡す必要がある。

開発者は、彼らのユーザーが利用するフィルタを開発することができる。新しいフィルタの公開は、特定のテンプレートのみでも、登録して全体でも可能である。いずれにしろ、関数の本質は、受け付けて、文字列を返すことである。新しいタグは少々複雑で、初期化と描画フェーズの両方が必要である。幸運なことに、最も面倒な部分は、ベースクラスを呼び出すことで処理することができる。

Jürgen Bäurle氏は、さらに進めて、SharePointに特化したDotLiquid拡張の作り方を提示している。

この記事に星をつける

おすすめ度
スタイル

BT