InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

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

  • 2011-12-12
  • 本文字数:560 字

    阅读完需:约 2 分钟

大多数模板引擎都愿意尽可能给用户赋予更多功能,而 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

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2011-12-12 05:421365
用户头像

发布了 340 篇内容, 共 123.5 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

SQL工具性能实测:居然比Navicat还快,数百万行数据导出仅51秒

雨果

sql 数据库管理工具 Web SQL sql studio

可视化分析能力MAX,瓴羊Quick BI带来全新数据分析体验

对不起该用户已成仙‖

百度前端必会react面试题总结

beifeng1996

React

unittest中使用ddt后生成的测试报告名称如何修改?(如test_api_0修改成test_api_0_titile)

虫无涯

单元测试 自动化测试 unittest 参数化 ddt

万亿级对象存储的元数据系统架构设计和实践

百度开发者中心

对象存储 文件存储 百度沧海

谈谈Linux内核的噪声

统信软件

Linux 内核

LR性能测试常见问题及处理方法(二)

虫无涯

性能测试 问题排查 LoadRunner

React源码分析4-深度理解diff算法

goClient1992

React

React源码分析2-深入理解fiber

goClient1992

React

面试官:说说React-SSR的原理

beifeng1996

React

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

Unittest接口测试生成报告和日志方法

虫无涯

日志 单元测试 自动化测试 unittest 测试报告

LR性能测试常见问题及处理方法(一)

虫无涯

性能测试 问题排查 LoadRunner

建设 TiDB 自动化平台:转转 DBA 团队实践

PingCAP

数据库 自动化 TiDB

自己手写一个redux

helloworld1024fd

JavaScript

Led透明显示屏的发展超乎你想象

Dylan

LED 显示器 LED显示屏

目前兰州市等保测评机构有几家?有新增的吗?

行云管家

等保 等级保护 等保测评 兰州

Java 集合中的排序算法浅析

京东科技开发者

jdk 后端 Java、 排序算法 企业号 2 月 PK 榜

假如问:你是怎样优化Vue项目的,该怎么回答

bb_xiaxia1998

Vue

解读Teradata结束中国直营背后的原因!国产数据库能填补空缺吗?

雨果

数据库管理工具 国产数据库 teradata SQL工具

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

BeyondCampus-护航高校网络安全

权说安全

网络安全 零信任

构建云边端一体的分布式云架构,软硬结合驱动边缘计算创新场景

百度开发者中心

云原生 边缘计算 #百度智能云#

堡垒机行业标杆产品是哪家呢?有哪些功能?

行云管家

网络安全 信息安全 等保 堡垒机

Golang 编程“珠玑”

MatrixOrigin

golang 分布式数据库 编程语言 MatrixOrigin MatrixOne

【FAQ】集成分析服务的常见问题及解决方案

HMS Core

HMS Core

美团前端必会vue面试题合集

bb_xiaxia1998

Vue

腾讯前端一面经典手写面试题合集

helloworld1024fd

JavaScript

12大团队任务分配管理软件盘点

PingCode

项目软件管理 项目软件

写过vue自定义指令吗,原理是什么?.m

bb_xiaxia1998

Vue

前端手写面试题总结

helloworld1024fd

JavaScript

  • 扫码添加小助手
    领取最新资料包
由用户生成为Ruby和.NET所用的安全模板_.NET_Jonathan Allen_InfoQ精选文章