X-Frame-Options
X-Frame-Options
HTTP 响应头可以用来指示浏览器是否允许在 <frame>
、<iframe>
、<embed>
或 <object>
中渲染页面。网站可以使用它来避免 点击劫持 攻击,方法是确保其内容不会嵌入到其他网站中。
只有当访问文档的用户使用支持 X-Frame-Options
的浏览器时,才会提供额外的安全性。
警告: Content-Security-Policy
HTTP 头有一个 frame-ancestors
指令,该指令 已弃用 支持浏览器的此头文件。
语法
X-Frame-Options
有两个可能的指令
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
指令
如果您指定 DENY
,那么当从其他网站加载页面时,浏览器不仅会尝试在框架中加载页面失败,而且从同一网站加载页面时,尝试也会失败。另一方面,如果您指定 SAMEORIGIN
,则只要包含它的网站与提供页面的网站相同,您仍然可以在框架中使用页面。
DENY
-
无论尝试执行此操作的站点是什么,该页面都无法在框架中显示。
SAMEORIGIN
-
只有当所有祖先框架与页面本身具有相同来源时,才能显示该页面。
ALLOW-FROM origin
已弃用-
这是一个已弃用的指令。遇到包含此指令的响应头的现代浏览器将完全忽略该头文件。
Content-Security-Policy
HTTP 头文件有一个frame-ancestors
指令,您应该使用它代替。
示例
警告: 在 <meta>
元素中设置 X-Frame-Options
(例如,<meta http-equiv="X-Frame-Options" content="deny">
)无效,不应使用!X-Frame-Options
仅通过 HTTP 头文件强制执行,如下面的示例所示。
配置 Apache
要配置 Apache 为所有页面发送 X-Frame-Options
头文件,请将其添加到您网站的配置中
Header always set X-Frame-Options "SAMEORIGIN"
要配置 Apache 将 X-Frame-Options
设置为 DENY
,请将其添加到您网站的配置中
Header set X-Frame-Options "DENY"
配置 Nginx
要配置 Nginx 发送 X-Frame-Options
头文件,请将其添加到您的 http、server 或 location 配置中
add_header X-Frame-Options SAMEORIGIN always;
您可以使用以下方法将 X-Frame-Options
头文件设置为 DENY
add_header X-Frame-Options DENY always;
配置 IIS
要配置 IIS 发送 X-Frame-Options
头文件,请将其添加到您网站的 Web.config
文件中
<system.webServer>
…
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
…
</system.webServer>
有关更多信息,请参见 Microsoft 支持文章,了解如何使用 IIS Manager 用户界面设置此配置。
配置 HAProxy
要配置 HAProxy 发送 X-Frame-Options
头文件,请将其添加到您的前端、监听或后端配置中
rspadd X-Frame-Options:\ SAMEORIGIN
或者,在新版本中
http-response set-header X-Frame-Options SAMEORIGIN
配置 Express
您可以使用 Helmet 来配置 Express 应用程序 在旧浏览器上设置 旧版 X-Frame-Options 头文件。
警告: 建议使用 Content-Security-Policy
HTTP 头文件以及 frame-ancestors
指令代替。
要使用 Helmet 设置 X-Frame-Options
,请将以下内容添加到您的服务器配置以设置 SAMEORIGIN
指令
const helmet = require("helmet");
const app = express();
app.use(
helmet({
xFrameOptions: { action: "sameorigin" },
}),
);
规范
规范 |
---|
HTML 标准 # the-x-frame-options-header |
浏览器兼容性
BCD 表格仅在浏览器中加载