知识卡片
三种嵌入第三方内容的方案在安全与数据能力上此消彼长
内容
让第三方内容出现在自己站点里,Facebook尝试过三种方案:直接渲染第三方HTML/JS,能力完整但打开代码注入风险;iframe沙盒安全但只能通过公开API访问数据,拿不到未开放的隐私数据;最终方案是让第三方返回声明式标记语言FBML,由容器站点受信任服务器解释执行,既能安全渲染隐私数据又不交出任意代码执行权。安全和能力往往需换一层抽象才能兼得。
参考来源
- 位置:《架构之美》第6章《数据增长:Facebook平台的架构》6.4.1~6.4.3节(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0152.xhtml-part0154.xhtml)
- 结论依据:原文分别指出直接渲染HTML"这就会允许应用完全违反用户……期望,让站点和用户暴露在各种安全攻击之下",iframe方案"虽然这解决了第一个实际问题……第二个实际问题仍未解决",以及FBML"完全让Facebook在受信任的服务器环境中渲染它"。
- 原始内容:如果Facebook直接在它的页面中渲染一个应用的HTML、JavaScript或CSS,这就会允许应用完全违反用户对http://facebook.com上受控体验的期望……虽然基于iframe的请求流程可以确保安全,但除了API服务暴露出来的数据之外,这些开发者并不能利用其他的新数据。