-1

使用邮递员我查询:

query MyQuery {
  users {
    nodes {
        id
        email
    }
  }

通过经过身份验证的请求(和管理员权限),我得到:

{
    "data": {
        "users": {
            "nodes": [
                {
                    "id": "dXNlcjox",
                    "email": "..."
                },
                {
                    "id": "dXNlcjoz",
                    "email": ".........."
                },
                {
                    "id": "dXNlcjoy",
                    "email": "................."
                }
            ]
        }
    },
    "extensions": {
        "debug": []
    }
}

返回所有用户,没关系

但 !!!

通过公开请求,我得到:

{
    "data": {
        "users": {
            "nodes": [
                {
                    "id": "dXNlcjox",
                    "email": null
                }
            ]
        }
    },
    "extensions": {
        "debug": []
    }
}

为什么节点:"id": "dXNlcjox"公开请求?

这是安全问题吗?

4

1 回答 1

0

其实,这没问题。

从 WP GraphQL 页面引用:

WPGraphQL 遵循 WordPress 访问控制权限,并且只公开 WordPress 已经公开公开的数据。已发布帖子的用户在 WordPress 中被视为公共实体。未发布帖子的用户被视为私有用户,不会包含在公共 GraphQL 请求中,但会包含在经过身份验证的用户发出的 GraphQL 请求中,这些用户具有查看用户的适当能力。

诸如用户电子邮件地址之类的字段也受 WPGraphQL 保护,并且仅向具有查看数据的适当能力的用户公开的经过身份验证的请求。

这个特定节点:"id": "dXNlcjox"恰好是wordpress的管理员,他的存在是公开信息(即使他的电子邮件不是)。

于 2021-05-27T12:23:12.347 回答