在本教程中,后var状态=\'草稿\';(请参见代码)。所以我只是担心没有人能够破解这个状态?
这取决于他是谁。注销用户根本无法创建任何帖子。订阅者也不能。贡献者可以创建帖子,但不能发布。但是,作者或编辑角色可以将其更改为发布。
因此,假设用户已登录,并且有一个角色允许他们发布帖子,并且他们位于该页面上,您担心他们可能会更改status = "draft"
到status = "publish"
.
首先,代码中的bugstatus
由于代码中存在错误,所以从不使用变量。帖子创建为draft
发帖不是因为你这么说,而是因为这是默认状态。
要修复此错误,您需要将其添加到data
:
status: status
在你这么做之前,他们可能会改变
status
到
"banana"
它什么也做不了。
其次,REST是无状态的,REST API不知道用户在哪个页面上,REST API不是这样工作的。他们能做什么和不能做什么是通过能力来控制的。
那么,当他们可以自己戳API时,谁在乎他们是否可以修改您的变量呢?
他们可以将以下代码复制粘贴到浏览器开发工具控制台中:
$.ajax({
method: "POST",
url: POST_SUBMITTER.root + \'wp/v2/posts\',
data: {
title: "hello world",
content: "post content",
status: "publish"
},
beforeSend: function ( xhr ) {
xhr.setRequestHeader( \'X-WP-Nonce\', POST_SUBMITTER.nonce );
},
});
嘿,普雷斯托,他们不需要修改你的代码!他们有自己的。如前所述,REST API需要3件事:
临时cookie是执行所要求的操作所需的功能没有什么要求他们使用您主题中的代码,也没有什么要求他们加载您的代码。只要他们登录,并且他们有能力,这将允许他们。
谁可以更改REST API中的Posts状态
这是你问题的关键,答案是
it depends. 任何告诉你“是”或“不是”的人都是骗子,而且还没有想清楚。
例如,acontributor
无法发布帖子,因此如果他们更改了post_status
到publish
API将拒绝该请求。您将收到一个JSON结构,告诉您所尝试的是被禁止的,以及一个403禁止的HTTP响应代码。
如果asubscriber
用户尝试了,它也会拒绝,即使状态为draft
, 因为订阅者无法创建帖子。您将收到一个JSON结构,告诉您所尝试的是被禁止的,以及一个403禁止的HTTP响应代码。
如果administrator
试过了会有用的,因为administrator
角色可以做任何事情。您将得到200个http代码成功响应。与editor
属于author
, 因为这些角色可以做到这一点,正如他们能够wp-admin
然后单击“发布”按钮。
这是因为这些角色能够发布分配给其角色的帖子。如果您删除了该功能,那么他们将无法再在REST API或WP Admin界面中发布
如你所见,It depends on the roles and capabilities of the logged in user making the request