关于Mustache html模板的安全问题
Security concerns with Mustache html templating
我有一个用例,其中mustache HTML模板的内容可能来自应用程序/最终用户(即下面代码片段中的脚本标签的内容)
<script id="template" type="x-tmpl-mustache">
Hello {{ name }}!
</script>
由于这可能会导致执行恶意代码,所以我正在执行
- 只允许添加HTML标签和属性的子集模板(在script标签内)
- 只允许HTML转义变量,即只允许{{name}}而不允许{{{name}}}。
对于应用程序的安全性还有什么需要考虑的吗?
我认为如果我们遵循"小而锋利的工具"的理念,这不是一个"胡子"的问题。然后,在将不安全数据(第三方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;
});
}
代码注入的领域太广,无法对您的问题给出简短的回答。你可以采用任何对你的应用程序来说足够高级的方法:定义应用程序期望从用户那里得到的数据格式,然后在运行时删除传入的不匹配这些格式的可疑数据。
您应该在服务器上执行user inputs
,而不是"仅"在客户端上执行。如果要在客户端执行一些"坏代码",那已经太迟了;)
相关文章:
- 关于ajax的安全问题
- AngularJs基于角色的菜单显示安全问题
- Http响应拆分安全问题的XMLHTTPRequest/Response用例的Filter实现
- 为什么我不能强制下载受污染的画布,为什么这是一个安全问题
- 让用户通过javascript访问cookie是一个安全问题
- 使用不受信任的字符串(require.js)调用require()会引发安全问题
- Openlayers IE安全问题
- 如何应对iframe安全问题
- 使用 javascript 创建用户帐户时存在 Firebase 安全问题
- 依赖于jquery和css的html标记中的安全问题
- XMPP Strophe.JS应用程序安全问题
- 在javascript中操纵信用卡号是否会导致安全问题
- Ajax 回调断点安全问题
- 安全问题是将我的访问者带到一个危险的下载页面
- Openlayer 3 安全问题
- 将 JavaScript 变量传递给 PHP 变量的安全问题
- 读取 JS 数组的安全问题
- 防止 iframe 安全问题
- ES2015模板字符串安全问题
- 关于chrome安全问题的Canvas to DataURI()