如何在WordPress网站中设置X-Frame-Options头部信息

29

我托管了一个使用WordPress创建的网站。

我收到了一个安全警报,显示“X-Frame-Options Header Not Set”,但我不知道它的含义。

有人能够解释一下这个警告是什么意思,并给我提供一个解决方案来防止它再次出现吗?


1
也许你可以使用这个?https://wordpress.org/support/topic/recommendations-for-x-xss-protection-x-frame-options-x-content-type-nosniff - Stephan Vierkant
4个回答

31

下面这个更简单的一行代码可以设置X-Frame-Options SAMEORIGIN,将以下内容添加到当前WordPress主题中的functions.php文件中:

add_action( 'send_headers', 'send_frame_options_header', 10, 0 );


3
这将是我更喜欢的选项,因为它可以添加到主题中的functions.php文件中,无需编辑WordPress核心文件或.htaccess文件。 - rhysclay
但是,如果在wp-includes/function.php中已经声明了send_frame_options_header,则会出现错误。在主题的function.php中选择不同的名称也没有帮助,因为您将设置多个x-frame-options。您需要以某种方式删除最初的标头...但是如何做到这一点而不触及核心functions.php(这应该永远不会被触及)。 - Suisse
为了使这个工作正常,我不得不使用'init'而不是'send_headers'。即 add_action('init', 'send_frame_options_header'); - undefined

7

选项1:前往wordpress-root/wp-includes/functions.php,搜索"X-Frame-Options",您将找到该函数。

function send_frame_options_header() {
@header( 'X-Frame-Options: SAMEORIGIN' );
} 

如果在您的functions.php文件中未定义X-Frame-Options,则只需将代码粘贴到functions.php中。为了防止Wordpress网站受到跨框架脚本攻击,请使用X-Frame-Options设置为SAMEORIGIN。 选项2: 或者,您可以从位于WordPress根目录中的.htaccess文件中设置X-Frame-Options。只需将下面的代码粘贴到.htaccess文件中即可。
Header set X-Frame-Options SAMEORIGIN

10
编辑WordPress核心是被强烈不推荐的。有一个更好的解决方案。 - Artem Russakovskii
10
永远不要在任何情况下编辑WordPress核心或使用选项1。 - erwstout
为什么不使用 wp-config.php 来做这件事呢? - brasofilo

2

我在多站点安装中遇到了这个错误,它阻止了子站点显示插件详情(当您单击“查看详情”并打开弹出窗口时)。

我通过将以下内容添加到我的wp-config.php文件中解决了这个问题:

header('X-Content-Security-Policy: frame-ancestors https://*.MYDOMAIN.com');
header('Content-Security-Policy: frame-ancestors https://*.MYDOMAIN.com');

更新:
这只适用于子域名,对于别名域名,我需要将 https://*添加白名单。


0
在任何 PHP 应用程序中,可以在页面内容发送之前设置标题。这是使用 header 函数完成的。
header('X-Frame-Options: SAMEORIGIN');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接