向最终用户公开 JavaScript 模板

Exposing javascript template to end users

本文关键字:JavaScript 模板 用户      更新时间:2023-09-26

我想允许最终用户通过允许他们指定一个模板字符串来执行一些自定义,该字符串在填充了用户可访问变量的对象的上下文中进行评估。然而,我看到对此表示担忧。我只需要让用户访问已定义值的打印。允许他们调用代码是不必要的,只会给次要功能增加太多的复杂性。

我需要的唯一功能的伪代码:

var userTemplate = "{{Persons.Total}} persons including {{Persons.First}}";
var variables = { Persons { Total: 10, First: "Bob" } };
return template(userTemplate, variables); // = "10 persons including Bob"

是否有任何"用户安全"的模板库?还是我应该自己用一堆正则表达式来做?

OWASP XSS 预防备忘单包含许多清理用户输入的规则,以防止跨站点脚本(又名 JavaScript 注入)。

规则 6 特别令人感兴趣,因为它讨论了使用 HTML 策略引擎以出站方式验证或清理用户驱动的 HTML。

你真的需要一堆正则表达式吗?在您的简单情况下,只需检查没有标签就足够了:

regex=/<['s'S]+>/