angularjs + 跨站脚本防止

标签 angularjs xss cross-site

Angularjs 是否负责 XSS 攻击。我读过 ng-bind 会小心。但是当我尝试做一个示例来测试它时,它允许我使用 ng-model 在输入类型中插入 html 标签......它没有转义 Html 标签。

我的页面中有很多输入元素,它们与 ng-model 绑定(bind),我应该怎么做才能确保如果我输入了 html 标签,angular 会忽略 html/scrip 标签。

前任。

<input id="name" ng-model="name"></input>

如果我输入为
'Hello, <b>World</b>!'

$scope.name 包含与我输入的内容相同的内容,但不排除标签。 IE
  var val = $scope.name;
  console.log(val); 

打印一样
'Hello, <b>World</b>!'

请让我知道如何在 angularjs 中解决这个问题。

谢谢

最佳答案

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

如果你想转义使用 ng-bind ,它会呈现标签而不像这样解释:
Hello <b>World</b>不像你好世界 !

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

如果您希望您的 HTML 标签被解释但安全地使用 ng-bind-html !

例如,如果您想显示此字符串:

'Hello <b>World</b><input type="text" />'

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

也许 ng-bind-html 是您正在寻找的。

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

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

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

希望能帮助到你 !

关于angularjs + 跨站脚本防止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007807/

相关文章:

google-compute-engine - 如何修复服务器和网站的跨站点源策略

javascript - 我应该如何将异步服务中的数据设置到 Controller $scope 中?

javascript - 在 ng-repeat 中使用过滤器

javascript - Angular 中兄弟作用域之间的通信

javascript - 清理 html 字符串中的所有脚本

php - 保护 PHP session 免受 XSS 攻击

angularjs - 从浏览器中删除 yeoman 图像

javascript - 是否可以在弹出窗口中检测用户点击事件?

asp.net - 如何防止 Asp.NET 中的 XSS

security - CORS 和 CSP 之间有什么区别?