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


Quoting into Cypher queries using PHP (escaping a string)

我使用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'})

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

所以对于Cypher和NeoClient,一定要总是传递你的变量作为sendCypherQuery方法的第二个参数。

作为旁注,在PHP中,mysql_real_escape_string从PHP5.5.0开始就过时了,所以两年多以前。这就是为什么您将使用PDO作为eg,并将变量也作为查询参数传递。

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

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