BT

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拡張の作り方を提示している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。