Явные / ручные индексные запросы Neo4j, параметры в предикате и возможные инъекции Cypher (SQL) - PullRequest
0 голосов
/ 19 мая 2018

Я собираюсь использовать явные / ручные индексные запросы Neo4j, что-то вроде этого:

MATCH (d:Decision)-[:HAS_VALUE_ON]->(ch:Characteristic) 
WHERE ch.id = 2 
CALL apoc.index.in(ch,'HAS_VALUE_ON','property.1.4:5 AND property.1.3:"practical"') YIELD node AS decision 
MATCH (decision)-[ru:CREATED_BY]->(u:User) 
RETURN decision, u

Чтобы использовать его, мне нужно создать предикат запроса индекса, например, на основе языка запросов Lucene.как в следующем примере:

'property.1.4:5 AND property.1.3:"practical"'

Согласно моей бизнес-логике, значения внутри предиката происходят из пользовательского интерфейса и потенциально могут использоваться для инъекций Cypher (SQL).

Ранее я использовал именованные параметры Cypher, чтобы избежать этой проблемы, но похоже, что она не работает внутри строки предиката.

Как с этим справиться в случае явного / ручного индексного предиката Lucene запроса?

...