#10637·parse-server

使用空操作符的关系查询会引发未捕获的 TypeError (500)

作者: AdrianCurtin创建于 2026年8月19日更新于 2026年8月19日

新问题核对表

公开而不是通过安全政策存档:这是对错误输入的未处理的例外,而不是披露或认证问题。 堆栈追踪留在服务器日志中,客户端得到一个通用的500个,过程活了下来,所以是按请求失败而不是崩溃.

QQ 问题描述

减少关系'改为.object 不检查操作是否为物体, 因此,在关系查询限制的任何地方, " null " 都会引起未发现的 " TypeError " ,而且请求没有通用500。

4个呼叫站点无人看守( " src/Captainers/Database Captain.js " ,位于9.10.1-alpha.6树上):

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 如果( 约束Key QQ'objectId') { 相关指数 = [query [key].objectId]; ///:1096 否则如果(约束Key ="$in"){ 相關索引 = 查询 [key]['$in'].map(r => r.obobjectId); ///:1098 否则,如果(约束Key="$nin"){ 是 Negation = 真实; 相關的IDs = 查询[key]['$nin'].map(r => r.obobjectId); ///:1101 {如果(约束Key="$ne"){ 是 Negation = 真实; 相干指数 = [kry ['$ne'].objectId]; //: 1104 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


一种非对象操作法,不是`null',例如`美元':`7',是无害的:`(7).objectId`是`未定义',它不提供身份证明。 只有 " null " 投出,因为它不能被打入盒子。

仅凭应用程序 ID 即可达到 。 不需要主密钥、会话令牌或客户端密钥 。

相關: 第4742回相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相相關相關相關相關相關相關相關相關相關相關相關相相關相關相關 这里的操作仍然没有验证。

* 复制步骤

1. 创建一个名为`朋友 ' 的`Owner ' 类,以`关系 ' 字段命名,并保存一个物体,使字段处于计划之中。
2. 发出一个查询,其关系限制包含`null':

获得/parse/class/Owner? 在哪里"朋友":{"$in":[null]}}. X- Parse- 应用程序- 文件: < appid>


每一个都转载:

* 约束 * 结果*
|-|-|-.
===============================================================================================================================================================================================================================================================
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}"朋友": {"$nin": [null] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}[null] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}======================
=================================================================================================================================================================================================
=============================================================================================================================================================================================================== (===============================================
======================== ======================================================================================================================================================================================================================================

最后一行不扔是因为`$ne'在 ' :1084-1090 ' 的大门失灵,这就要求`$in'、`$ne'、`$nin'的大门是真实的,所以提取回路永远没有运行。 添加任何符合事实的同父异母的操作员满足大门的要求,然后将falsy`$ne'作参考。 空数组就够了,因为`[]'是真实的。

实际结果

500{"代码": 1"消息":"内部服务器出错"}


###
. . . . . . .

内容来源: parse-community/parse-server