【问题标题】:Is there a HTTP Header to prevent a page from being rendered in anything but an IFRAME?是否有 HTTP 标头可以防止页面在 IFRAME 之外的任何内容中呈现?
【发布时间】:2016-06-09 21:22:41
【问题描述】:

我知道 HTTP 标头设置可以防止 HTML 页面在来自另一个域的页面中的 IFRAME 内打开,或者在 IFRAME 中完全被拒绝,但是是否有 HTTP 标头设置会阻止浏览器页面直接呈现(即在地址栏中输入 url),但在 IFRAME 中可以。需要在 IE/Chrome/FF 等环境下工作。

显然,我可以在页面呈现后通过 JS 代码执行此操作,但我想在此之前执行此操作,或者在浏览器中触发某些内容,因此没有代码进入浏览器的调试器。

或者,传入的 HTTP 请求中是否有可以使用的东西?

【问题讨论】:

  • 不,X-Frame 不支持这个。您无法在服务器上执行此操作,因为代理在请求中不发送任何内容来指示其将呈现页面的位置。您需要页面本身的代码来执行此操作。

标签: javascript html security iframe


【解决方案1】:

不,什么都没有。 X-FRAME-OPTIONS 和 CSP Frame-Ancestors 不能强制页面被框起来。

JavaScript 是你的朋友。如果您在页面的开头包含并运行 JavaScript,您可以在呈现页面的其余部分之前检测它是否被加框。

或者,您可以在初始页面上设置会话变量,检查外部框架,然后重定向,然后检查此页面上的会话变量。这将确保用户已经从第一页导航到那里,尽管如果他们随后继续在新选项卡或窗口中打开它,会话变量仍将被设置,因此您不能强制它们。此外,如果用户禁用了 3rd 方 cookie,这将不起作用(尽管您可以在查询字符串中传递一个值,然后在服务器端进行检查)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2011-09-20
    • 2011-02-02
    • 1970-01-01
    • 2017-08-24
    • 2020-06-30
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多