保护来自同源服务器的 HTML 内容

Posted

技术标签:

【中文标题】保护来自同源服务器的 HTML 内容【英文标题】:Securing HTML contents from servers of same origin 【发布时间】:2019-06-02 11:51:49 【问题描述】:

这不是一个常见的问题,但我想知道是否存在任何技巧或即将推出的标准。

以下是一个流程以及我想要实现的内容。

    从服务器端加载的 Web 应用程序 客户端脚本加载一些安全内容(不是来自 #1),这些内容需要受到 Web 应用程序提供商的保护。它可以直观地展示给用户。 Web 应用程序提供商知道安全内容在哪里(在 Dom 路径中),并且可能会尝试通过放置脚本来捕获它 但是,不应从服务器(即使来自同一来源)或外部应用程序(如果可能,甚至从开发人员工具)劫持安全内容

编辑:

为了更好地理解,它适用于 Web 应用程序不在其数据库中保存用户数据而是从其他地方加载数据的用例。以防万一,我需要保护 Web 应用程序中的数据,这在常规 Web 应用程序中并不常见。

【问题讨论】:

使用 iframe 并设置 SCP? @Diodeus-JamesMacFarlane 常见的用例是保护免受 xss 但不是来自同源。如果我的网络应用程序域是 www.wantyourdata.com,带有 SCP 的 iframe 能否保护数据免受 www.wantyourdata.com 中的脚本的影响? 不。您应该使用不同的子域进行隔离。 如果我理解你的答案正确,我需要一个相反的。 jsfiddle.net/fkiller/410928bc/1 这个例子,Web 应用程序只能从同一个域 iframe (/robot.txt) 中捕获内容,而不能捕获跨域 iframe (//google.com/robot.txt) 中的内容。但是,您可以通过将 X-Frame-Options 设置为 allow-from https://google.com 来启用它,它来自 Web 服务器,这意味着 Web 应用程序具有访问信息的控件。我的意图不是给 Web 应用程序这样的控制权。认为这更像是提供给 Web 应用程序提供商的平台。 【参考方案1】:

您应该使用可以使浏览器拒绝注入攻击的内容安全策略 (CSP)。正确设置这些可能有点棘手,所以我会使用Report URI 来帮助您完成它。诀窍是首先使用仅报告模式,直到您验证设置然后切换到强制执行。

【讨论】:

以上是关于保护来自同源服务器的 HTML 内容的主要内容,如果未能解决你的问题,请参考以下文章

JSONP

同源策略与CORS

Ajax跨域--同源策略 & 什么是跨域

沙盒、IFrame 和允许同源

ajax跨域问题-web开发必会

同源策略