2

我正在使用 PHP 和 neoxygen/neo4j-neoclient 来构建图形数据库并寻找一种方法来转义字符串,以便我可以安全地将它们引用到 Cypher 查询中。我知道有关 Cypher 表达式的文档,但我想知道是否有人已经用 PHP(或者可能是其他语言,以便我可以将其移植到 PHP)中编写了这样的转义函数?也许我可以摆脱使用已经存在的 PHP 转义函数,比如说 MySQL?

编辑:最后,如果有人正在寻找一种通过 sendCypherQueries 传递参数的方法,这是一个示例:

$parameters = array(
    'key'=>'example',
);

$client->sendCypherQuery("MERGE (node {key:{key}})", $paramteres);

这相当于一个 Cypher 查询:

MERGE (node {key:'example'})
4

2 回答 2

2

对于您未作为参数传递的所有变量,您所描述的潜在“注入”都是可能的。

因此,对于 Cypher 和 NeoClient,请务必始终将变量作为sendCypherQuery方法的第二个参数传递。

附带说明一下,在 PHP 中,mysql_real_escape_string自 PHP5.5.0 以来已过时,所以两年多以前。这就是为什么你会使用 PDO 来传递变量作为查询参数。

于 2015-07-16T19:45:53.800 回答
0

{key}语法已过时。改用$key

$client->sendCypherQuery('MERGE (node { key: $key })', [ 'key' => 'example' ]);
于 2022-01-06T20:09:52.453 回答