我希望允许最终用户进行一些自定义,方法是允许他们指定一个模板字符串,该模板字符串在填充了用户可访问变量的对象的上下文中进行评估。但是,我已经看到了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"
那里有“用户安全”的模板库吗?或者我应该自己做一堆正则表达式?
答案 0 :(得分:0)
OWASP XSS Prevention Cheat Sheet包含许多规则,用于清理用户输入以防止跨站点脚本(也称为javascript注入)。
Rule6特别令人感兴趣,因为它讨论了使用HTML策略引擎以出站方式验证或清理用户驱动的HTML。
答案 1 :(得分:0)
你真的需要一堆正则表达式吗?在您的简单情况下,只需检查没有标记即可:
regex=/<[\s\S]+>/