【发布时间】:2015-04-14 08:56:25
【问题描述】:
我们公司计划使用 Knockoutjs,但我发现 this link 正在讨论 KnockoutJS 中的安全问题。他们说人们很容易在 data-bind 属性中注入恶意代码。
例如:
<script src="http://knockoutjs.com/downloads/knockout-2.3.0.js"></script>
<div data-bind="x:alert(1)" />
<script>
ko.applyBindings();
</script>
我对XSS攻击不是很了解,也不知道有多少种方法可以在网站中注入恶意代码。
谁能告诉我页面何时在客户端 PC 上呈现,那么人们如何注入此
<div data-bind="x:alert(1)" />以使其正常工作?谁能告诉我黑客如何将其注入在浏览器中打开的页面中?谁能告诉我knockoutjs还有哪些其他安全问题?
如果不是很安全,我不会使用它。
我还获得了一些链接,讨论了如何更好地保护 knockoutjs:
- http://brianmhunt.github.io/articles/knockout-plus-content-security-policy/
- https://github.com/brianmhunt/knockout-secure-binding
有人知道如何获得完全安全的 knockoutjs 吗?因为看过 KnockoutJS 的教程,感觉学习曲线不高。
【问题讨论】:
-
是否存在任何工具列表,这些工具将通过 url 检查网站 url 以检查威胁和漏洞,最后显示每个 url 和安全问题的详细信息。让我知道。谢谢
-
我只有时间粗略研究一下您链接到的网站和 Slideshare 演示文稿,但据我了解,他们的批评是 如果 攻击者设法例如,她选择的插入数据绑定属性、Knockout 和其他 JSMVC 框架提供了比必要的更广泛的攻击面。它没有指定攻击者首先如何注入代码,或者使用 Knockout 以某种方式实现这一点。黄金法则,在任何地方都适用:不要相信用户提供的数据。例如:永远不要盲目地将您从用户那里获得的东西放入
html绑定中。 -
Open Web Application Security Project 是熟悉 XSS 和其他威胁的好地方。
-
从我对该站点的快速浏览来看,我无法确定有人会如何修改数据绑定属性中的值。我知道在使用
text绑定时淘汰赛会进行编码,因此建议使用text,并且在使用html时要非常小心,因为它允许xss,所以只有在您信任正在输出的html 时才使用它 -
@IanGrainger 是的,答案是否定的,因为它只是使用 JavaScript 来设置值
element.value=viewModel.value
标签: knockout.js xss