我在哪里,我们要筛选客户端的聊天记录清除聊天应用工作的宣誓词和HTML,从我可以告诉在Angular 1.2.0-rc2 ng-bind-html
应自动清除您传递给它的任何文本。另外,从我看到的文档,你可以通过$sce.trustAsHtml(input)
到NG-绑定HTML(理论上),因为他们在1.2.0删除ng-bind-html-unsafe
渲染HTML。错误抛出
我的问题是在我的jsfiddle我没有看到NG绑定,HTML干净的HTML。我可以通过一个字符串链接到ng-bind-html
,它会呈现链接。我想在一个短的代码过滤工作(因此管理员可以做一些事情来的[url|http://google.com|Google]
的影响,并有其生成的HTML包裹在$sce.trustAsHtml(input)
这是我的jsfiddle:http://jsfiddle.net/pa4XV/
你可以看到,我有上$scope
以下:
$scope.chats = [
{from: 'test', message: 'Chat Message 1'},
{from: 'test', message: 'Chat Message 2 <a href="http://facebook.com">Facebook</a>'},
{from: 'test2', message: 'Chat Message [url|http://google.com|Google]'}
];
我期望第三消息来显示一个链路和第二消息发送到由NG-结合 - HTML(因为它不会由$sce
包裹)被捕获,但在小提琴我我看到两者都被渲染,这非常混乱因为这不是我在代码中看到的行为。我的Fiddle和我的代码之间唯一很大的区别是$ scope.chats来自Firebase,而不是硬编码,我的shortTags
过滤器有代码包装它检查用户是否是主持人(它只替换mod的短标签)。
有一个很高的可能性,我做这个“错误”或有更好的方式来做这种事情的角度(我开始与$ watchCollection添加.safeMessage参数,但导致循环,这我现在明白了),如果这是更好的方式,我很乐意以不同的方式解决这个问题。感谢您的任何帮助,您可以提供!
事情已经出了问题你的小提琴,这似乎是空的。 – DoctorMick
@DoctorMick谢谢你,更新! http://jsfiddle.net/pa4XV/ – JoshStrange
我相当肯定,所有ng-bind-html“清除”都是脚本标记和可能导致可能的XSS攻击的事情,这可能解释了为什么您的链接仍在显示。通过使用$ sce,你可以说XSS不是一个问题,并且内容是可信的(当然,聊天消息并不是这样)。这是一个小问题22,因为如果你不使用ng-bind-html,你会让所有的东西都逃脱,但是它没有任何东西可以逃脱。你可能需要你自己的指令来渲染内容,并在应用你的shortTags过滤器之前调用$ sanitize(而不是$ sce),但肯定有人有一个短标签库? – Kato