如何将 X-Frame-Options 标头添加到简单的 HTML 文件?

信息安全 Web应用程序 视窗 http iis 点击劫持
2021-08-25 15:10:28

我在将X-Frame-Options标题添加到简单的 HTML 文件时遇到问题。

有没有办法使用 JavaScript 来做到这一点?

3个回答

X-Frame-Options是一个 HTTP 标头。因此,它不是 HTML 的一部分,不能在 HTML 文档中设置。

它只是一个 HTTP 标头的一个原因是客户端应该能够在解析 HTML 代码之前决定是否允许将文档嵌入到框架中。

因此,您无法通过编辑文件来实现,但您需要修改服务器的 HTTP 响应。通常,这是在 Web 服务器软件提供的设置中或使用服务器端语言完成的。

例如,Apache 中的设置可能如下所示:

Header always append X-Frame-Options DENY

或者,在 PHP 中,您可以像这样设置标题:

<?php header('X-Frame-Options: DENY'); ?>

请注意,有一个更现代的CSP等效项frame-ancestors但是,虽然可以将某些 CSP 策略设置为<meta>标签,但这在此处是不可能的。这并不能正常工作:

<head>
  <!-- This does *not* work! -->
  <meta http-equiv="Content-Security-Policy" content="frame-ancestors 'none'">
</head>

还可以查看Clickjacking Defense Cheat Sheet,了解除了设置 XFO 标头之外的点击劫持防御措施的概述。

X-Frame-Options 标头添加在服务器端,而不是客户端。这是因为标头用于控制浏览器应如何呈现页面。

无论服务器托管您的文件,都必须添加此标头。

由于您在评论中提到 IIS 是您的 Web 服务器,是的,有一种方法可以在 Web 服务器本身上进行设置。

其他几个答案提到将其添加到 web.config,如果这是一个 ASP.NET 应用程序,这是一个很好的选择,但还有另一种方法适用于从 IIS提供的任何Web 应用程序,无论技术如何。

如果您打开,然后展开导航窗格中Internet Information Services (IIS) Manager的节点并突出显示您的站点,则在“功能视图”窗格的功能组下,有一个名为 的功能如果您打开此节点,在右侧的窗格中,您会看到添加标题的操作。只需添加带有名称和所需值的标题,IIS 就会将其添加到从该站点提供的每个响应中。 SitesIISHTTP Response HeadersActionsX-Frame-Options