1

我想通过 iframe 控制限制我的网站内容在其他域中使用。推荐的元标记即<meta http-equiv="X-Frame-Options" content="deny">不起作用。我能做些什么?

4

5 回答 5

1

您不能在元标记中设置 X-Frame-Options,只能使用 HTTP 标头。

在这里阅读更多:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

例如,如果您使用的是 Apache,您应该在 .htaccess 文件中添加这样的一行

Header set X-Frame-Options DENY
于 2017-08-02T07:39:12.337 回答
0

只需在标题中使用它,100% 工作

<?php header( 'X-Frame-Options: DENY' ); ?>
于 2021-08-24T05:33:59.253 回答
0

避免在元标记中这样做。在 IIS 或应用程序中执行此操作:

protected void Application_BeginRequest(object sender, EventArgs e)
{
  HttpContext.Current.Response.AddHeader("x-frame-options", "DENY");
}

或者

<httpProtocol>
  <customHeaders>
    <add name="X-Frame-Options" value="DENY" />
  </customHeaders>
</httpProtocol>

如果要允许特定域,请使用 allow-from 选项而不是拒绝。

此标头可能不适用于旧浏览器,例如 Mozilla 3.0,因此您还需要实现客户端验证,名为 busting JS。在这里检查:https ://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet

于 2017-08-02T07:45:41.750 回答
0

如果您需要在响应中添加标头,请考虑在标头即将发送时注册回调以执行此操作。

在 BeginRequest 和发送的响应之间,代码可以完全替换或清除 headers 集合(尽管可能不是,如果您自己编写了所有代码)。

在此示例中,我有一些下游代码,有时会添加x-frame-options标题,但会丢失一些 HTML 页面。因此代码确保在回调中设置标头:

protected void Application_BeginRequest()
{
    HttpContext.Current.Response.AddOnSendingHeaders(httpContext =>
    {
        if (isHtmlResponse() && hasNoFrameOptionsHeader())
        {
            httpContext.Response.AddHeader("x-frame-options", "SAMEORIGIN");
        }

        bool isHtmlResponse () {
            var contentTypeValue = httpContext.Response.Headers["content-type"];
            return contentTypeValue is null ? false : contentTypeValue.ToLower().Contains("text/html");
        }
        bool hasNoFrameOptionsHeader () => httpContext.Response.Headers["x-frame-options"] is null;
    });            
} 
于 2019-10-04T09:06:11.220 回答
0

不起作用。浏览器错误:X-Frame-Options 只能通过随文档一起发送的 HTTP 标头来设置。里面可能没有设置。

注意:设置元标记是没有用的!例如,没有效果。不要使用它!只有通过像下面的示例那样通过 HTTP 标头进行设置,X-Frame-Options 才会起作用。

来源链接

配置阿帕奇:

Header set X-Frame-Options "deny"
Header always set X-Frame-Options "sameorigin"

配置nginx:

add_header X-Frame-Options sameorigin always;

配置 IIS:

<system.webServer>
  ...
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="sameorigin" />
    </customHeaders>
  </httpProtocol>
  ...
</system.webServer>

X-Frame-Options是一种针对点击劫持攻击的缓解技术。它是服务器发送的 HTTP 响应标头,用于指示在什么情况下页面内容应显示在框架上下文中。如果违反了 header 指令,理解 header 的浏览器将不会显示页面的内容(例如,如果 evil-example.com 将 good-site.com 放在 iframe 中,但 good-site.com 发送的 header 显示X-Frame-Options: DENY。因此,不会发生点击劫持,因为没有 UI 元素可以显示给受害者。它不提供针对 CSRF 的保护。阅读更多:点击劫持和 ..通过 HTTP 响应的安全性

于 2019-05-27T23:52:44.793 回答