2014-01-21 3 views
3

Мне было интересно, как в обычных RDMS есть SQL-инъекция, поэтому в PHP мы используем PDO для предотвращения инъекций, но что мы используем для предотвращения инъекций в Neo4j. Я использую neo4j RST api через jquery и через модуль neo4jphp. Так что любые предложения ребята.neo4j db protection protection

Заранее спасибо ..

ответ

3

Одно из значений с помощью веб-служб развязки клиента от реализации услуг. В вашем случае это означает, что REST аннулирует детали запросов Cypher, которые Neo4jPHP делает от вашего имени. Таким образом, ответственность за предотвращение инъекций лежит на Neo4jPHP. Это деталь реализации. Вы не должны возиться с этим, даже если хотите.

Ситуация другая, если вы сами делали запросы Cypher. Тогда вы будете использовать параметры, как это:

query = "START n=node(*) WHERE n={search} RETURN n" 
db.query query, {search: "userProvidedValue"} 

Я предлагаю вам написать на форумах Neo4jPHP, чтобы гарантировать, что они действительно взяли эти меры предосторожности при написании параметризованных запросов Cypher. Или look at the source и убедитесь сами.

2

Neo4jPHP JSON кодирует все значения, отправленные на сервер Neo4j. Запросы Cypher отправляются с хешем значений параметров. Как и с SQL, вы не должны создавать свои запросы Cypher непосредственно из пользовательского ввода. Вместо этого используйте запросы Cypher с параметрами, которые сервер Neo4j будет правильно обрабатывать.

Neo4jphp документы здесь: https://github.com/jadell/neo4jphp/wiki/Cypher-and-gremlin-queries#executing-a-cypher-query

Neo4j REST Docs здесь: http://docs.neo4j.org/chunked/stable/rest-api-cypher.html#rest-api-use-parameters