X-Frame-Options header 有什么意义?
What's the point of the X-Frame-Options header?
我在开发一个应用程序,用户可以通过将其加载到 iframe 中来将其网站嵌入到周围的内容中。这显然依赖于未在用户网站上设置的 X-Frame-Options 才能工作。一位客户要求我创建一个反向代理,因为出于安全考虑,他们不想从他们的站点中删除 X-Frame-Options header。
我设置了代理并且一切正常,但是 X-Frame-Options header 如果它只是创建一个代理来规避那么简单,那有什么意义呢?
我知道 header 的存在是为了防止点击劫持,但如果有人可以制作一个代理来解决它......它真的能提高安全性吗?
我不是来自企业开发领域,你能帮我理解为什么 IT 部门会拒绝删除 header 的原因吗?
我注意到 google.com 和 facebook.com 也设置了 header,所以它不会完全没有意义吧?
谢谢
任何通过 http 提供服务的站点都可以通过使用代理等方式更改其内容。所以是的,这在 http 站点上是毫无意义的,因为它很容易被击败。
通过 https 提供站点可以防止这种情况发生,除非您有一个代理服务器也可以拦截 https 流量。这只有作为 man-in-the-middle (MITM) 的代理才能实现,因此它会解密代理处的流量,然后 re-encrypts 将流量发送到服务器并返回。为此,代理服务器需要知道服务器私钥,或者更有可能用自己的副本替换提供给其客户端的证书。
虽然 MITM 通常与攻击相关联,但也有一些合法的场景(尽管许多人认为即使这些也不合法,而 https 应该是安全的!):
Anti-virus 软件可以执行此扫描请求以保护您的计算机。例如,如果您 运行 Avast 并打开了 SSL 扫描(认为它默认打开)并转到 https://www.google.com 并查看证书,您会注意到它是由 Avast 而不是 [=38] 颁发的=] 像往常一样。为此,防病毒软件需要在您的 PC 上安装一个颁发者证书,它可以从中颁发这些替换证书,您的浏览器仍会接受这些替换证书作为真实证书。安装此颁发者证书需要您在安装 anti-virus 软件时临时授予的管理员访问权限。
企业代理执行类似的过程,以允许他们监控来自其员工的 https 流量。同样,它需要使用管理员权限在 PC 上安装发行者。
所以基本上,如果您已经拥有或过去曾经拥有 PC 的管理员权限,那么基本上只能像您建议的那样使用代理来处理 https 流量 - 在这种情况下,所有的赌注都会被取消。
执行此操作的唯一其他方法是使用代理将流量保持在 http 上。例如,如果您请求 www.google.com 那么这通常会重定向到 https://www.google.com 但您的代理可以拦截该重定向请求,而是将客户端->代理连接保持在 https 上,从而允许代理修改请求以删除headers。这取决于用户不输入 https,没有注意到没有绿色挂锁,并且可以使用 HSTS 等技术(对于 google.com 等某些网站,某些浏览器会自动预加载)等技术将其打败。所以拦截流量并不是真正可靠的方法。
许多安全站点使用 X-Frame-Options 来防止点击劫持
这可以防止攻击者通过透明层欺骗用户在他们甚至不知道自己加载的网站上执行他们不知道的操作。此外,此攻击仅适用于直接从用户浏览器中的 attacked/victim 站点域提供的框架。
您可能认为您可以反向代理站点并删除帧破坏 header。但是您的代理不会接收或向受害站点发送最终用户 cookie。这些安全站点依赖于活动的 session,因此会将来自代理的请求解释为来自未经身份验证的用户,从而完全击败点击劫持点。
我在开发一个应用程序,用户可以通过将其加载到 iframe 中来将其网站嵌入到周围的内容中。这显然依赖于未在用户网站上设置的 X-Frame-Options 才能工作。一位客户要求我创建一个反向代理,因为出于安全考虑,他们不想从他们的站点中删除 X-Frame-Options header。
我设置了代理并且一切正常,但是 X-Frame-Options header 如果它只是创建一个代理来规避那么简单,那有什么意义呢?
我知道 header 的存在是为了防止点击劫持,但如果有人可以制作一个代理来解决它......它真的能提高安全性吗?
我不是来自企业开发领域,你能帮我理解为什么 IT 部门会拒绝删除 header 的原因吗?
我注意到 google.com 和 facebook.com 也设置了 header,所以它不会完全没有意义吧?
谢谢
任何通过 http 提供服务的站点都可以通过使用代理等方式更改其内容。所以是的,这在 http 站点上是毫无意义的,因为它很容易被击败。
通过 https 提供站点可以防止这种情况发生,除非您有一个代理服务器也可以拦截 https 流量。这只有作为 man-in-the-middle (MITM) 的代理才能实现,因此它会解密代理处的流量,然后 re-encrypts 将流量发送到服务器并返回。为此,代理服务器需要知道服务器私钥,或者更有可能用自己的副本替换提供给其客户端的证书。
虽然 MITM 通常与攻击相关联,但也有一些合法的场景(尽管许多人认为即使这些也不合法,而 https 应该是安全的!):
Anti-virus 软件可以执行此扫描请求以保护您的计算机。例如,如果您 运行 Avast 并打开了 SSL 扫描(认为它默认打开)并转到 https://www.google.com 并查看证书,您会注意到它是由 Avast 而不是 [=38] 颁发的=] 像往常一样。为此,防病毒软件需要在您的 PC 上安装一个颁发者证书,它可以从中颁发这些替换证书,您的浏览器仍会接受这些替换证书作为真实证书。安装此颁发者证书需要您在安装 anti-virus 软件时临时授予的管理员访问权限。
企业代理执行类似的过程,以允许他们监控来自其员工的 https 流量。同样,它需要使用管理员权限在 PC 上安装发行者。
所以基本上,如果您已经拥有或过去曾经拥有 PC 的管理员权限,那么基本上只能像您建议的那样使用代理来处理 https 流量 - 在这种情况下,所有的赌注都会被取消。
执行此操作的唯一其他方法是使用代理将流量保持在 http 上。例如,如果您请求 www.google.com 那么这通常会重定向到 https://www.google.com 但您的代理可以拦截该重定向请求,而是将客户端->代理连接保持在 https 上,从而允许代理修改请求以删除headers。这取决于用户不输入 https,没有注意到没有绿色挂锁,并且可以使用 HSTS 等技术(对于 google.com 等某些网站,某些浏览器会自动预加载)等技术将其打败。所以拦截流量并不是真正可靠的方法。
许多安全站点使用 X-Frame-Options 来防止点击劫持
这可以防止攻击者通过透明层欺骗用户在他们甚至不知道自己加载的网站上执行他们不知道的操作。此外,此攻击仅适用于直接从用户浏览器中的 attacked/victim 站点域提供的框架。
您可能认为您可以反向代理站点并删除帧破坏 header。但是您的代理不会接收或向受害站点发送最终用户 cookie。这些安全站点依赖于活动的 session,因此会将来自代理的请求解释为来自未经身份验证的用户,从而完全击败点击劫持点。