javascript - Angular 翻译指令中的 XSS

标签 javascript angularjs xss angular-translate

在我的项目中,我使用“escape”作为清理值策略。我在某个地方使用了翻译指令(属性)。我在其他一些地方使用翻译过滤器。

使用指令:

<span translate="{{vm.text}}"><span>

这很容易受到 XSS 攻击。如果 vm.text 的值是<script>alert()</script> , 然后执行脚本并显示弹出窗口。

带过滤器:

<span>{{vm.text | translate}}<span>

vm.text 的值被转义并且 html 显示为 &lt;script&gt;alert()&lt;/script&gt;

在 Angular 翻译文档 ( https://angular-translate.github.io/docs/#/guide/19_security ) 中,他们建议使用“转义”作为清理值策略,说“当前清理模式存在问题,它将对 UTF-8 字符进行双重编码,或者特殊的 Angular 色。建议:使用“逃避”策略,直到问题得到解决'。

是否有适当的方式将 html 显示为 <script>alert()</script>不执行它?

最佳答案

使用过滤器(管道),您始终可以绑定(bind)到元素 textContent像这样的属性:

<span [textContent]="vm.text | translate"></span>

不需要手动转义或过滤,因为据我所知,textContent 中的任何内容都不会被解析。

关于javascript - Angular 翻译指令中的 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241756/

相关文章:

javascript - 故事书中的垂直滚动不准确

javascript - Ractive 模板 if 语句不考虑父 if 语句

javascript - 一起使用滚动和调整大小处理程序

angularjs - Angular Material 侧导航和固定工具栏

angularjs - 禁用 Twitter Typeahead 上的 Enter 键?

javascript - 直接将 URL 哈希参数值分配给 Javascript 变量是否不安全?

javascript - NestJS 根据浏览器语言传递静态文件

javascript - ngRepeat、JSON、angularJS - 不允许重复 - 通过指令中的模板

asp.net - 在存储到数据库之前或渲染之前清理 HTML? (ASP.NET 中的 AntiXSS 库)

javascript - XSS - 寻找对 JSON.decode for mootools 请求的评论的解释