使用 PHP 引用 Cypher 查询(转义字符串)

Quoting into Cypher queries using PHP (escaping a string)

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

编辑: 最后,如果有人正在寻找一种使用 sendCypherQueries 传递参数的方法,这里有一个例子:

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

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

这相当于一个 Cypher 查询:

MERGE (node {key:'example'})

您描述的潜在 "injection" 对于您未作为参数传递的所有变量都是可能的。

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

作为旁注,在 PHP 中,mysql_real_escape_string 自 PHP5.5.0 以来已过时,所以两年多以前了。 这就是为什么您将 PDO 用于 eg 并将变量也作为查询参数传递的原因。

{key} 语法已过时。使用 $key 代替:

$client->sendCypherQuery('MERGE (node { key: $key })', [ 'key' => 'example' ]);