On Wed, Dec 06, 2023 at 07:31:41PM -0500, Viktor Dukhovni via Postfix-devel wrote:
> However, I am concerned about the use of `bson_new_from_json()` and its > need to quote the MongoDB operators. This feels completely unnatural. > How is there then a distinction between: > > $or: [...] > > and > > "$or": [...] > > the latter should be a verbatim key called "$or", not a MongoDB > operator. How do we avoid having issues with inputs that contain a > leading "$", or are the leading "$" signs only special in the JSON > object key, rather than the value? This needs to be understood and > documented. As well as clarifying any potential confusion around > projections... It does, however, look overloading: { "$operator": ... } to be the same as: { $operator: ... } is expected practice with MongoDB: https://github.com/mongodb/mongo-c-driver/blob/54f737ea488caadac0cf9275c4be1fbb37cf5609/src/libmongoc/tests/test-mongoc-matcher.c#L222-L267 So the best we can hope for is that this overloading is restricted to keys, and never applies to values in queries, so that in: { "$or": [ "foo": "$bar" ] } only "$or" is special, while "$bar" is a literal. Users will then have to know to let untrusted content leak into query keys, but that should be obvious regardless of metacharacter issues. I am still uneasy about this. What if one really wanted a key that starts with "$"? Ideally the API would have supported operators without overloading already quoted strings. -- Viktor. _______________________________________________ Postfix-devel mailing list -- postfix-devel@postfix.org To unsubscribe send an email to postfix-devel-le...@postfix.org