Angular 如何检查带有iframes的html是否安全?
我从API中获取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> 问题: 我必须执行哪些检查以确保该字符串足够安全?(它不包含嵌入式脚本,只指向这四个站点中的一个,没有
- youtube.com
- vimeo.com
- dailymotion.com
- prezi.com
<div [innerHtml]="safeHtml"></div>
问题:
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)来自网站的框架
地址类型放在这里,这是最好的做法,您还必须注意,这将*拒绝访问占位符URL,例如Https
,但您可以根据需要添加这些变体https://y2u.be
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;