Angular 6仅信任innerHtml中的iframe

时间:2018-09-19 05:31:38

标签: angular iframe angular-dom-sanitizer

我有一个响应HTML的Api。由于xss,我不想完全信任内容。

但是有时我会基于白名单在信任的响应中包含iframe。

我知道bypassSecurityTrustHtml()的可能性,但是我没有找到如何部分信任Html的方法。

例如: api响应

<p>Some test text<br class='autobr' />\n<strong>some 
more</strong></p>\n<iframe 
src=\"https://player.vimeo.com/video/289729765\" width=\"640\" 
height=\"360\" frameborder=\"0\" webkitallowfullscreen 
mozallowfullscreen allowfullscreen></iframe>\n<p><a 
href=\"https://vimeo.com/289729765\">Mike Hopkins: The 
Backyard</a> from <a 
href=\"https://vimeo.com/diamondback\">Diamondback Bicycles</a> 
on <a href=\"https://vimeo.com\">Vimeo</a>.</p>\n<p>and the 
end</p>

然后,我只想信任iframe并显示整个文本,例如:<div innerHtml="myResponse"></div>

我尝试提取iframe,将其信任,然后将其替换为受信任的SafeHtml。那没用。 是否有可能部分绕过SecurityTrustHtml()?

我正在使用Angular 6 ...

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可能使用了错误的属性绑定语法。

<div innerHtml="myResponse"></div>

应该是

<div [innerHTML]="myResponse"></div>

PS-不确定到底是拼写错误还是实际的语法问题。