WordPress为什么restapi在默认情况下是启用的?

你好,我有一个网站,但我相信它不仅是我的网站,成百上千的网站有他们的restapi公开(虽然只读)。启用pretty permalinks后,所有restapi都将在上公开和启用网址:www.com/wp-json。 几乎所有网站都公开了API,访问/wp-json/wp/v2/users可以帮助我轻松找到注册的用户。这应该被认为是一个安全问题,不是因为技术上的困难,而是因为网站上的很多信息(如果不是全部的话)都被暴露了。 也许有一张wordpress的罚单,但是我找不到。 WordPress使用restapi本身,因此需要为新的编辑器.插件可以修改用户列表问题-安装WordFence。例如: 请参见https://i.imgur.com/zJRIBy4.pngWordPress使用REST API本身,因此需要为新编辑器启用REST API,但是默认情况下,它应该只对WordPress和具有正确权限的用户可用,而不是对所有人?! 如果你想知道为什么会这样,那就是用户名不被视为安全的一部分。 这不仅关乎安全,也关乎隐私。/wp-json/wp/v2/media显示媒体库中的文件,但这些文件并不总是供公众使用(人们可能认为某些文件只有在用户登录并进入媒体仪表板后才能访问,这只是众多用例中的一个)。是否真的没有关于rest端点的常规设置?我知道古腾堡需要终点。。不管是谁编辑文章,都应该能够访问api(尽管可能不是所有端点)。这不仅是一个安全问题,而且是一个隐私问题。最糟糕的想法是,对于普通用户来说,它是不灵活的。我知道需要5行php代码才能为公众禁用api,但为什么不在设置面板中设置一个该死的设置呢? @katsar0v不要创建重复的主题。我已经关闭了您的另一个主题。 tl;dr您可以通过插件禁用它。我用这个。 https://wordpress.org/plugins/disable-wp-rest-api/ 要增加安全性,请添加2FA插件。 https://wordpress.org/plugins/search/2FA/ 我个人用这个。 https://wordpress.org/plugins/two-factor网站/ 较长的回复: 没有/wp-json/wp/v2/users公开的内容是通过https://some-site-url/author/userid/公开的而且用户名枚举从来都不是关于安全性的。也不会是这样,登录事务的公共部分被认为是很好的,公共的。 例如:我的用户名是这些。 jdembowski你可以在这里得到https://profiles.wordpress.org/jdembowski/ 和这里https://wordpress.org/support/users/jdembowski/ 和这里https://make.wordpress.org/support/author/jdembowski/ 甚至在我自己的网站上,这里https://blog.dembowski.net/author/jan/作为jan这不起作用,因为我用了一点方法破坏了我的网站。链接在我的900多篇博文中都有。 在Twitter上也是https://twitter.com/jan_dembowski/作为jan_dembowski 我也可以使用我的电子邮件地址登录到这些系统中的任何一个,因为我不会发布垃圾邮件。但这并不是什么秘密,不,不要把任何人的邮件发到这里来说明问题。 我所有的系统都使用这样的密码。 2XbM*aTA9qtgV!HUy_LC@cmDjAt323viF@pW3dZbtN!aPhYPvPPEjkb3qu*x@ZykEa 我使用一个名为1Password的工具来生成密码,尽管还有很多其他的密码。当我感到特别有安全意识时,我会为登录启用2FA。 任何你不能明确控制的东西,比如你的用户名,都不能被视为安全解决方案的一部分。这就是为什么你有密码,在很多地方是2FA甚至MFA(这很酷)。你的用户名就像你的电子邮件地址一样只是一个标识符。它绝不意味着是秘密的,就你的电子邮件地址而言,你一直在分发它。 你没有写下面的引述,但我正在努力完成。 但是你使用一个插件来为未登录的用户禁用REST API。 是的,但不是为了安全。我尝试在restapi响应中过滤gravatar,但失败了。我安装这个插件是为了看看它是如何工作的。 (gravatar可能会暴露电子邮件地址,我用它们代替内联base64编码的图像。我也不认为这是一个威胁,但我有一个下午的空闲时间。) 如果你把用户ID设为机密,你现在有两个机密了。如果你的秘密用户ID在外面,你有什么办法?获取新用户ID?你可以随时更改密码。这就是它的设计目的,也是解决安全问题的地方。 使用强密码。如果您觉得有必要,可以添加2FA。但是不要把安全性放在你的用户ID上。这不是它在任何地方的目的。 - 这个回复是1年9个月前由Jan Dembowski修改的。理由:愚蠢的打字错误 @jdenbowski 谢谢你的详细回复。这个restapi不能被WordPress内核调整(这里我指的是默认的安装和设置页面)有什么特别的原因吗? 它已经发生了好几次,核心\"消费\"本身的一些插件,所以功能已经存在,当你安装WordPress。我理解您的观点,您对URL的看法是正确的(尽管这主要取决于是否显示作者和评论等主题)。 这里没有/wp json/wp/v2/用户公开的内容尚未通过https://some site url/author/userid/而且用户名枚举从来都不是关于安全性 我不同意这一点,我不是在尝试技术,而是从博客作者/简单用户的角度来看。从技术上讲***13***提供的id完全取决于主题。有几个信息字段(以及元信息),主题决定了要显示什么-用例是你寻找一个主题,看到演示,看到有一个作者页面和什么(以及如何)显示在那里。同时,不管您是否需要,wordpressrestapi只显示信息。好吧,你安装了这个插件,但是如果那些设置不是默认的(防御策略),不是更好吗? 用户名不应被视为安全问题–你又是对的。但是想象一下你在一个没有***14***网址的wordpress网站上注册。你不能写文章,你注册是因为\"高级\"服务(只是一个用例,可能存在的众多用例之一)。现在这个网站确实显示了文章作者的信息,但是因为你注册了你的帐户,所以暴露在***15***之下。我在这里可能又重复了一遍,但我只是想说,这也应该被视为一个隐私问题,而不仅仅是安全问题。 (gravatar可能会暴露电子邮件地址,我用它们代替内联base64编码的图像。我也不认为这是一种威胁,但我有一个下午的空闲时间。) 电子邮件也被曝光了,这又是一个隐私问题,而不是安全问题。如果***16***基本上暴露了你邮件的md5,wordpress网站就不能保证这些邮件是私人的。MD5散列算法曾经被认为是安全的加密散列,但是那些日子已经一去不复返了。但是这太技术化了,我现在不想麻烦了(但这也是一个潜在的问题) 奥巴马基金会的真实用例-主题没有显示任何作者信息,***17***是不可访问的,但是rest api让你基本上知道谁是幕后的编辑团队。 有趣的是(我不确定,但是restapi尊重settings页面的feed限制(默认为10),这很可能是正确的。也可能不是什么大问题,但是***18***端点显示了所有也从其他插件注册的端点,这基本上暴露了网站上安装了哪个插件。 有没有办法将此升级为\"功能请求\"或与核心开发人员讨论此主题?5.3或5.4版本可以很容易地包含一个最小的设置,即使是一个非技术性的博客作者也会意识到,信息是暴露在那里的。一个开关也可以很容易地作出,无论这是私人与否。为基本的东西安装插件真的不应该,这应该由cms来完成(我自己的意见) PS:我创建了一个trac票证-https://core.trac.wordpress.org/ticket/48043#ticket如果有人也分享他的意见,我会很高兴的。这个答复修改了一年,9个月前,作者Kristiyan Katsarov。 感谢您的详细回复。这个restapi不能被WordPress内核调整(这里我指的是默认的安装和设置页面)有什么特别的原因吗? 这不是任何设置页面中的选项,因为这样做没有任何意义。这不是一个风险。这就是插件、过滤器和操作存在的原因,它为用户认为需要的边缘情况提供了一个选项。 正如您可能知道的,禁用它的代码并不多。这是我建议的插件。 https://plugins.trac.wordpress.org/browser/disable-wp-rest-api/trunk/disable-wp-rest-api.php 不是很多代码。只是一些操作和过滤器。 奥巴马基金会的真实用例–主题不显示任何作者信息,/author/:name不可访问,但是restapi让您基本上知道谁是幕后的编辑团队。 这是如何反驳我写的任何东西的?在任何意义上或形式上?诚实的问题。 这里也没有隐私问题,只是一些你可能觉得不受欢迎的行为。这导致建议写一些代码或使用插件。我自己更喜欢插件,但操作和过滤器并不难使用。 有没有办法将此升级为\"功能请求\"或与核心开发人员讨论此主题? 是。照你所做的那样提出一张trac罚单。别这样

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1127

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1033

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this->id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:775

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this->id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:866

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:904

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:848

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:834

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:809

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1622

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1264