From 038d7bd727e6275268545af8f9f9a19b364fc823 Mon Sep 17 00:00:00 2001 From: Steve Clay Date: Thu, 31 Jan 2019 12:23:40 -0500 Subject: [PATCH] postgres: Refuse to build unsafe JSON lists for contains in Postgres (#5337) --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index a24aad0e..94adf031 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -282,6 +282,12 @@ const buildWhereClause = ({ schema, query, index }): WhereClause => { name = transformDotFieldToComponents(fieldName).join('->'); fieldValue.$in.forEach(listElem => { if (typeof listElem === 'string') { + if (listElem.includes('"') || listElem.includes("'")) { + throw new Parse.Error( + Parse.Error.INVALID_JSON, + 'bad $in value; Strings with quotes cannot yet be safely escaped' + ); + } inPatterns.push(`"${listElem}"`); } else { inPatterns.push(`${listElem}`);