BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

由用户生成为Ruby和.NET所用的安全模板

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2011年12月13日. 估计阅读时间: 1 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

大多数模板引擎都愿意尽可能给用户赋予更多功能,而Liquid则不同,它的设计哲学是要限制用户所能做的事情。目的是要让最终用户能够创建自己的模板,而不需要陷于服务器的安全问题。

Liquid最初是为电子商务平台Shopify创建的,从2006年就已经开始正式使用。Tim Jones使用DotLiquid这个名字把这个引擎迁移到了.NET上。这两个版本都不允许模板访问底层平台,从而保证了安全性。它们使用的是高度受限的指令,仅限于使用名为“过滤器(filters)”的简单函数以及条件语句。两个版本的Liquid标记语法都一样。

渲染模板的过程包括两个步骤。首先,源代码会被解析为可重用的Template对象。然后,在需要的时候会调用模板的render方法。由于模板无法访问Ruby或者.NET的变量,所以需要使用数据字典或者键值对(key-value pairs)来传递这些变量。

开发者可以创建他们自己由用户支持的过滤器。新的过滤器可以暴露给特定模板或者注册给所有模板使用。不管采用哪种方式,它们本质上都是会接受并返回字符串的函数。对于新的标签块则有些复杂,需要初始化(initialization)和渲染(rendering)两个阶段。幸运的是,大多数琐碎问题都是通过对基类的调用处理的。

Jürgen Bäurle还向我们展示了如何创建DotLiquid针对SharePoint的特定扩展

查看英文原文:Safe User-Generated Templates for Ruby and .NET

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT