angularjs +跨站脚本防止

dav*_*v10 20 xss cross-site angularjs

Angularjs是否负责XSS攻击.我读过ng-bind需要注意.但是当我尝试做一个样本来测试时,它允许我在输入类型中使用ng-model插入html标签...它没有逃脱Html标签.

我的页面中有很多输入元素,它与ng-model绑定,我该怎么做以确保输入html标签,angular忽略html/scrip标签.

恩.

<input id="name" ng-model="name"></input>
Run Code Online (Sandbox Code Playgroud)

如果我输入为

'Hello, <b>World</b>!'
Run Code Online (Sandbox Code Playgroud)

$ scope.name包含与我输入的内容相同的内容,但未排除标记.即

  var val = $scope.name;
  console.log(val); 
Run Code Online (Sandbox Code Playgroud)

打印相同

'Hello, <b>World</b>!'
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在angularjs中解决这个问题.

谢谢

Tho*_*ons 27

请看这里:http://docs.angularjs.org/api/ngSanitize/service/$sanitize

如果你想要转义使用ng-bind,它会像这样呈现标签而不需要解释:

Hello <b>World</b>不喜欢Hello World!

你明白吗 ?所以ng-bind是安全的,因为它不关心HTML标签.

如果你想要解释你的HTML标签,但安全地使用ng-bind-html!

例如,如果要显示此字符串:

'Hello <b>World</b><input type="text" />'
Run Code Online (Sandbox Code Playgroud)

结果将是:Hello World但没有输入,因为AngularJS编译器使用$ sanitize服务并检查HTML元素的白名单,并且未授权iput.

也许ng-bind-html就是你要找的东西.

如果您只是想确保用户不能在输入中输入html标签,只需在输入中使用指令ng-pattern即可!

http://docs.angularjs.org/api/ng/directive/input

它需要输入中允许的字符的正则表达式!

希望能帮助到你 !

  • 但我对所有页面中的所有输入元素使用ng-model.那么如何在ng-model输入中阻止XSS?由于ng-bind是单向的,ng-model是双向的,我需要防止ng-model.此外,我尝试使用ng-bind作为输入元素和标签标签,它仍然允许我在里面有html标签.恩.<label ng-bind ="first"> </ label> <input ng-bind ="name">.在控制器中:$ scope.first ='Hello <b> World </ b> <input type ="text" />'; $ scope.name ='Hello <b> World </ b> <input type ="text"/>'; 它用html标签显示标签和输入,即它没有转义标签; 所以ng-bind也没有用. (2认同)
  • 所以你的意思是,angularjs不支持在ng-model上构建XSS预防.并且在所有地方应用ng-pattern是更多的工作..我知道如果我们可以实现这一点的任何其他方式.但有角度的faq表示它提供了基本安全漏洞的内置保护,包括跨站点脚本和HTML注入攻击.http://docs.angularjs.org/misc/faq.谢谢.. (2认同)

Ste*_*ell 10

我不相信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.在评论的最后,有一个链接到谷歌文档,进一步讨论和角度团队的回应.