首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angularjs +跨站脚本阻止

angularjs +跨站脚本阻止
EN

Stack Overflow用户
提问于 2014-04-11 16:51:38
回答 1查看 49.8K关注 0票数 21

是Angularjs负责XSS攻击。我读到过ng-bind需要注意。但是当我尝试做一个示例来测试这一点时,它允许我使用ng-model在输入类型中插入html标签……它没有转义Html标签。

我在我们的页面中有很多输入元素,它与ng-model绑定,我应该做什么来确保如果我输入一个html标签,angular会忽略html/scrip标签。

例如。

代码语言:javascript
复制
<input id="name" ng-model="name"></input>

如果我输入为

代码语言:javascript
复制
'Hello, <b>World</b>!'

$scope.name包含的内容与我输入的内容相同,没有排除标签。i.e

代码语言:javascript
复制
  var val = $scope.name;
  console.log(val); 

打印方式相同

代码语言:javascript
复制
'Hello, <b>World</b>!'

请告诉我如何用angularjs解决这个问题。

谢谢

EN

回答 1

Stack Overflow用户

发布于 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团队的进一步讨论和回应。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23007807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档