我想知道,就像在传统的RDMS中一样,有SQL注入,所以在PHP中,我们使用PDO来预防注入,但是在Neo4j中,我们使用什么来防止注入呢?我正在通过jquery和neo4jphp模块使用neo4j RST api。所以有什么建议伙计们。
提前谢谢..
发布于 2014-01-22 01:52:37
使用web服务的价值之一是将客户端与服务的实现解耦。在您的例子中,这意味着REST抽象了Neo4jPHP代表您进行的Cypher查询的细节。因此,防止注入的责任落在了Neo4jPHP身上。这是一个实现细节。即使你想,你也不应该去摆弄它。
如果您自己进行Cypher查询,情况会有所不同。然后,您可以像这样使用参数:
query = "START n=node(*) WHERE n={search} RETURN n"
db.query query, {search: "userProvidedValue"}我建议您写信给Neo4jPHP论坛,确保他们确实通过编写参数化的Cypher查询来采取了这些预防措施。或者look at the source,自己验证一下。
发布于 2014-01-23 09:08:29
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文档:http://docs.neo4j.org/chunked/stable/rest-api-cypher.html#rest-api-use-parameters
https://stackoverflow.com/questions/21265278
复制相似问题