我们公司计划使用Knockoutjs,但我发现this link正在讨论KnockoutJS中的安全问题。他们说人们可以轻易地在数据绑定属性中注入恶意代码。
例如:
<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:
有谁知道如何获得完全安全的knockoutjs?因为我看过KnockoutJS的教程,觉得学习曲线不高。
答案 0 :(得分:6)
&#34;确保淘汰赛#34;不是你如何阻止XSS。
您必须首先管理您的XSS曝光,无论您如何将数据绑定到应用程序中的元素,并首先保护具有敲除绑定的页面:
验证会影响特定网页返回的输入 列表项
不允许用户在没有用户的情况下呈现html输出 首先消毒它
不允许不受信任的第三方投放 脚本引用或包含来自第三方的链接 信任。
如何防止XSS的完整列表在这里:
https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
你会发现&#34;没有使用淘汰赛#34;不在这些列表中的任何一个上,并且大多数问题与管理用户输入及其在脚本代码中的结果有关。对于用户输入如何在您的敲除绑定中结束也是如此。
使用您在上面链接的安全绑定机制管理您的敲除暴露将减少您潜在的表面攻击区域。
但是,一旦你的服务器返回了恶意的html或链接在你的页面中,无论你是否有淘汰赛,你都会遇到XSS问题。