我有一个用例,其中胡须HTML模板的内容可能来自应用程序/最终用户(即下面代码片段中脚本标记的内容。)
<script id="template" type="x-tmpl-mustache">
Hello {{ name }}!
</script>
由于这可能导致恶意代码的执行,我正在做
为了应用程序的安全性还有什么需要考虑的事项吗?
答案 0 :(得分:4)
如果我们遵循“小而敏锐的工具”这一理念,我认为这不是一个“小胡子”的问题。然后在将不安全数据(第三方JSON)映射到模板之前,您将使用其他工具验证数据。
最简单的方法是替换字符串字段,包含不安全的数据。
function clearJson(userStringData){
return JSON.parse(userStringData, function(k,v) {
// string values containg something like
// html tags or js block braces will not pass
return String(v).match('[<>{}]') ? 'UNSAFE' : v;
});
}
代码注入领域太宽,无法对您的问题做出简短回答。您可以应用任何足以满足您应用程序的方法:定义应用程序期望的用户数据格式,然后在运行时删除与这些格式不匹配的传入可疑数据。
答案 1 :(得分:1)
您应该在服务器上执行user inputs
,而不是在客户端上执行“仅”。如果某个“坏代码”将在客户端上执行,那已经太晚了;)