首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止具有原点的帧访问wordpress中的交叉原点帧。

阻止具有原点的帧访问wordpress中的交叉原点帧。
EN

Stack Overflow用户
提问于 2018-11-25 18:03:43
回答 2查看 5.6K关注 0票数 1

我正在做一个网站,假设网站名为"https://website(它是构建在wordpress上的),其中我在控制台上得到了以下错误:

代码语言:javascript
复制
Uncaught DOMException: Blocked a frame with origin "https://website" from accessing a cross-origin frame.

    at contents (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:2:26921)

    at Function.map (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:2:3613)

    at a.fn.init.n.fn.(anonymous function) [as contents] (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:2:27001)

    at b (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=postbox,thickbox,hoverIntent,common,admin-bar,wp-a11y,updates,plugin-install,svg-painter,heartbeat,wp-auth-check,shortcode,wp-ba&load%5B%5D=ckbone,media-models,wp-plupload,wp-mediaelement,wp-api-request,media-views,media-editor,media-audiovideo,mce-view,imgareaselect,&load%5B%5D=image-edit&ver=4.9.8:347:103)

    at HTMLBodyElement.<anonymous> (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=postbox,thickbox,hoverIntent,common,admin-bar,wp-a11y,updates,plugin-install,svg-painter,heartbeat,wp-auth-check,shortcode,wp-ba&load%5B%5D=ckbone,media-models,wp-plupload,wp-mediaelement,wp-api-request,media-views,media-editor,media-audiovideo,mce-view,imgareaselect,&load%5B%5D=image-edit&ver=4.9.8:347:1306)

    at HTMLBodyElement.dispatch (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:3:12444)

    at HTMLBodyElement.r.handle (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:3:9173)

    at Object.trigger (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:3:11573)

    at Object.a.event.trigger (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:9:8275)

    at HTMLDivElement.<anonymous> (https://website/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,utils,underscore,wp-util,backbone,&load%5B%5D=moxiejs,plupload&ver=4.9.8:3:18991)

上面的错误是通过单击wordpress插件的View Details部分(如下所示)生成的:

这个错误似乎存在于,每个wordpress插件中,但是当我打开一个新的选项卡时,它会工作,但是当我打开同一个窗口时,它就不能工作了。

问题陈述:

我想知道为了解决这个错误,我需要在wordpress中修改哪个文件。这个错误似乎存在于每个wordpress插件中。正如前面提到的,它在一个新的选项卡中工作,但是不能在相同的页面中工作。

我有一种感觉,我必须通过看到上面的错误(load-scripts.php,因为错误是在该文件中生成)而在下面的文件中进行一些更改,但不确定需要添加哪些行才能使其工作。

https://website/wp-admin/load-scripts.php

EN

回答 2

Stack Overflow用户

发布于 2018-11-28 13:07:38

您的WordPress管理界面发生了一些不好的事情。

首先要注意的是,您所描述的错误是一个众所周知的问题,您可能已经注意到了:SecurityError:阻止具有原点的帧访问跨源帧。

请看第一个答案:

您不能使用JavaScript访问不同来源的用户,如果您能够这样做,这将是一个巨大的安全漏洞。对于相同来源的策略,浏览器阻止脚本试图访问具有不同来源的框架。 如果要访问框架,协议、主机名和端口必须是域的相同

需要注意的第二件事是“查看详细信息”按钮在WordPress管理界面中所做的事情:它打开一个包含和IFrame的ThickBox,它经常在iframe中显示远程内容。我们在这里疯狂地描述了这一工作原理:参考/厚盒

load-scripts.php是加载在管理程序中的一个重要的WordPress核心文件,用于加载JavaScript文件,而不必嵌入每个文件。这些JavaScript文件通常使用admin_enqueue_scripts()函数(脚本)添加到您的WordPress管理中。

由于您的问题非常少见,每次插件的“查看详细信息”按钮都能正常工作,因此只有两种可能性:

1.“查看详细信息”IFrame通常是从WordPress所在的相同位置加载的,因此您可能会遇到问题,以至于浏览器希望从不同的主机加载它。

如果您的WordPress安装中有一些错误配置,并且Thickbox试图从浏览器认为是另一个主机的主机获取IFrame,则会发生这种情况。正确配置WordPress。

2.您有一个编程错误的插件或主题,该插件或主题正在注入导致此问题的脚本

解决方案:一个接一个地关闭你的主题和所有插件,看看错误是否仍然存在。通过这种方式,您可以找到导致问题的修改,然后可能会向插件开发人员发出bug请求。

几乎100%肯定是一个插件、主题或配置错误导致了这个问题。

票数 3
EN

Stack Overflow用户

发布于 2022-08-15 02:02:27

对于后代来说,您的X帧选项可能被服务器设置为拒绝,或者配置被另一个插件追加,但是当服务器没有正确配置或配置了严格的策略以防止对跨源帧的任何访问时,可能会出现阻塞的帧问题。由于每个插件在查看细节链接时都会受到影响,我的回答与@Blackbam通过打开一个厚框来解释它的工作原理是一致的,并且在解释为什么它们都没有出现时使用了i帧。

我想知道为了解决这个错误,我需要在WordPress中修改哪个文件。这个错误似乎存在于每个wordpress插件中。如前所述,它在一个新的选项卡中工作,但在同一个页面中不能工作。

因此,对于这个特殊的情况,我不认为这一定是一个WordPress问题,而是一个主机服务器配置,取决于您对服务器的访问程度,或者在构建网站的任何地方,将决定您可以做些什么来解决这个错误,或者您是否需要联系支持来帮助您解决这个错误。

(由于这个答案只是为后人加上的,请原谅现在使用的时态引语,因为我意识到这句话已经问了3年了。)

解决办法:

有两个选项可能对您有效,并且将根据您的服务器和用户访问权限而有所不同。

解决方案1:通过修改.htaccess文件添加权限

如果您的web主机服务器运行在Apache或其他受支持的web服务器上,您可以尝试将下面的行添加到.htaccess文件中:

代码语言:javascript
复制
<ifModule mod_headers.c>
        Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
        Header always set X-Frame-Options "sameorigin"
        Header setifempty Referrer-Policy: same-origin
</ifModule>

对于语法,您可以参考此页。但作为另一种选择,您也可以指定一个特定的域,以便保留安全特性,而不是将X-Frame-Options设置为"sameorigin",如:

代码语言:javascript
复制
Header always append X-Frame-Options "ALLOW-FROM website.com/*"

并将"website.com/*“替换为您希望允许的域,并注意到ALLOW-FROM这里之间的空白,如进一步解释的这里。如果您安装了其他已修改.htaccess文件的插件,请确保将此条目放在任何Wordpress创建的条目之上,因为.htaccess文件是按顺序加载的,还请注意,并不是所有浏览器都支持它。现在,根据服务器安全策略的不同,如果这不起作用,那么您必须继续使用下一个解决方案。

解决方案2:修改服务器配置

虽然我只包含来自这里的Apache服务器的说明作为参考,但此页也包括Nginx、IIS、HAProxy和Express的配置。如果您可以访问WHM和/或正在运行虚拟服务器,并且需要根访问,则可以找到完整的解释这里

登录到web服务器并查找以下文件:

代码语言:javascript
复制
/etc/apache2/conf/httpd.conf

# or you can also create a new file named 'include.conf' if it
# doesn't already exist
/etc/apache2/conf.d/userdata/{USERNAME}/{DOMAIN-NAME}/include.conf

如果文件存在,如果将该行设置为DENY以禁用限制,则可以将该行注释掉,或者将下面的行添加到新创建的配置文件中:

代码语言:javascript
复制
<ifModule mod_headers.c>
    Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
    Header always set X-Frame-Options "sameorigin"
</ifModule>

然后,您需要重新构建配置并重新启动Apache服务器。

可以通过运行命令进行重建。

代码语言:javascript
复制
/usr/local/cpanel/scripts/rebuildhttpdconf

然后重新启动

代码语言:javascript
复制
/usr/local/cpanel/scripts/restartsrv_httpd

如果没有same-origin设置,即使在服务器上安装了Wordpress,jquery请求也会被阻塞,这也是防止从其他站点嵌入任何内容的一部分。阅读更多关于从OWASP安全报头的信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53470350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档