向最终用户公开javascript模板

时间:2012-05-30 15:09:28

标签: javascript template-engine

我希望允许最终用户进行一些自定义,方法是允许他们指定一个模板字符串,该模板字符串在填充了用户可访问变量的对象的上下文中进行评估。但是,我已经看到了concerned raised。我只需要让用户访问已定义值的打印。允许他们调用代码是不必要的,只会给次要功能增加太多的复杂性。

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

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

那里有“用户安全”的模板库吗?或者我应该自己做一堆正则表达式?

2 个答案:

答案 0 :(得分:0)

OWASP XSS Prevention Cheat Sheet包含许多规则,用于清理用户输入以防止跨站点脚本(也称为javascript注入)。

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

答案 1 :(得分:0)

你真的需要一堆正则表达式吗?在您的简单情况下,只需检查没有标记即可:

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