我正在建立一个网站,用户可以在其中添加嵌入内容(YouTube、Google Forms、Airtable ......)并将这些嵌入内容展示给其他人。嵌入是可以包含<script>
和<iframe>
-tags 的 HTML 片段。
重要的是嵌入的内容不能接管父页面或使用父站点的会话 cookie 发出请求。
最初看起来很有成效的一个选择是不具有 . 的allow-same-origin
insandbox
属性<iframe>
。但是,如果您删除它(例如 YouTube),许多嵌入将不起作用。
正如 WhatWG 建议的那样,Codepen和JSBin等网站将此类用户定义的内容托管在不同的域中,以确保 iframe 无法使用来自顶级域的 cookie。但是,它们也包含allow-same-origin
在sandbox
-attribute 中,这让我有点困惑。
- 我需要实施哪些安全措施来安全地托管和显示这些用户定义的嵌入?
- 除了将代码托管在不同的域上之外,Codepen/JSBin 还实施了哪些其他安全措施来安全地托管和显示用户定义的 HTML?
- 我可以使用
srcdoc
-attribute 而不是将嵌入 HTML 托管在不同的域上吗?(接受不支持 IE)
注意:此时 OEmbed、Embedly 和 Iframely 不是我的选择,因为我需要比允许的更多的通用嵌入。