Angular 如何检查带有iframes的html是否安全?

Angular 如何检查带有iframes的html是否安全?,angular,html-sanitizing,angular-sanitizer,Angular,Html Sanitizing,Angular Sanitizer,我从API中获取html代码字符串,其中可能包含来自以下服务的嵌入式视频: youtube.com vimeo.com dailymotion.com prezi.com 如果我确信它足够安全,我可以将它们转换为受信任的安全HTML(以绕过Angular的消毒剂): 然后将其放在如下页面上: <div [innerHtml]="safeHtml"></div> 问题: 我必须执行哪些检查以确保该字符串足够安全?(它不包含嵌入式脚本,只指向这四个站点中的一个,没有

我从API中获取html代码字符串,其中可能包含来自以下服务的嵌入式视频:

  • youtube.com
  • vimeo.com
  • dailymotion.com
  • prezi.com
如果我确信它足够安全,我可以将它们转换为受信任的安全HTML(以绕过Angular的消毒剂):

然后将其放在如下页面上:

<div [innerHtml]="safeHtml"></div>

问题:

  • 我必须执行哪些检查以确保该字符串足够安全?(它不包含嵌入式脚本,只指向这四个站点中的一个,没有任何复杂的重定向)

  • 将这些网站添加到Angular的消毒剂的例外情况中有意义吗?如果是,怎么做

  • 提前谢谢


    p、 我看到了这个类似的问题:但我希望有一些更新鲜、更相关的角度最佳实践,而不是一个角度特定的答案;您希望网站上有一个标题,以便仅允许通过(i)帧访问cerain网站

    例如:

    Content-Security-Policy: 
             default-src 'self' https:; 
             script-src 'self' https:; 
             frame-src: https://*.youtube.com https://*.vimeo.com 
                        https://*.dailymotion.com https://*.prezi.com;
    
    (标题为多行,仅用于清晰阅读)

    此CSP为您的网站设置了一些规则,以便:

    • 默认仅允许通过https引用网站本身(“self”)
    • 脚本只能[安全访问]文件而不能内联脚本,并且必须从同一网站调用这些文件
    • (i)来自网站的框架
      只能调用指定的域名。我把
      Https
      地址类型放在这里,这是最好的做法,您还必须注意,这将*拒绝访问占位符URL,例如
      https://y2u.be
      ,但您可以根据需要添加这些变体
    上面的CSP声明完全符合您在问题中的要求,因此避免了您需要通过
    safeHtml
    sanitizer过滤某些域

    消毒剂可能仍然需要通过——不知怎么的——但我不知道,所以无法回答这个细节

    编辑 如果用户使用非TLS连接或您的网站不受TLS保护,这是一个更灵活的示例,还包括一个短URL示例:

    Content-Security-Policy: 
             default-src 'self'; 
             script-src 'self'; 
             frame-src: https://*.youtube.com https://*.vimeo.com 
                        https://*.dailymotion.com https://*.prezi.com
                        http://*.youtube.com http://*.vimeo.com 
                        http://*.dailymotion.com http://*.prezi.com
                        https://youtu.be;
    

    我的2美分。没有什么是真正安全的。我不相信任何来源,但这取决于您的安全需求/限制。
    Content-Security-Policy: 
             default-src 'self'; 
             script-src 'self'; 
             frame-src: https://*.youtube.com https://*.vimeo.com 
                        https://*.dailymotion.com https://*.prezi.com
                        http://*.youtube.com http://*.vimeo.com 
                        http://*.dailymotion.com http://*.prezi.com
                        https://youtu.be;