是Angularjs负责XSS攻击。我读到过ng-bind需要注意。但是当我尝试做一个示例来测试这一点时,它允许我使用ng-model在输入类型中插入html标签……它没有转义Html标签。
我在我们的页面中有很多输入元素,它与ng-model绑定,我应该做什么来确保如果我输入一个html标签,angular会忽略html/scrip标签。
例如。
<input id="name" ng-model="name"></input>如果我输入为
'Hello, <b>World</b>!'$scope.name包含的内容与我输入的内容相同,没有排除标签。i.e
var val = $scope.name;
console.log(val); 打印方式相同
'Hello, <b>World</b>!'请告诉我如何用angularjs解决这个问题。
谢谢
发布于 2015-01-18 23:16:11
我不相信AngularJS有默认的白名单输入验证,而这正是您的测试所做的。所以用户几乎可以输入任何他们喜欢的东西。这并不奇怪--白名单是非常特定于领域的,而Angular是一个设计用于广泛领域的框架。
对XSS的主要防御措施是对所有不受信任的数据进行正确编码(参见https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS)。默认情况下,Angular会这样做。
底线是AngularJS在默认情况下是不受XSS影响的,不需要特殊操作。您可以尝试使用普通的{{scopevariable}}表示法将输入的内容输出到视图中,从而验证一些基本场景。
我确实找到了AngularJS XSS漏洞的详细分析:https://code.google.com/p/mustache-security/wiki/AngularJS。在评论的末尾,有一个指向google文档的链接,上面有来自angular团队的进一步讨论和回应。
https://stackoverflow.com/questions/23007807
复制相似问题