“注入”关注Cypher over REST

时间:2014-06-19 21:33:11

标签: neo4j cypher code-injection

我想知道在查询REST时是否存在查询注入问题?

参数化查询肯定会使事情更清晰,但我也能够使用字符串连接进行查询来操作属性和标签。

我发现后一种方法更灵活,因为有时我无法按照参数范例查询我想要的方式。 (Can I parameterize labels and properties on CREATE or SET? (REST and transaction)

如果不担心某种注入,那么连接查询字符串会带来安全风险吗?我个人对查询Neo4j没有太深入的理解,所以我想让我的选择开放,并愿意尝试任何建议。

编辑:阅读Wes的评论后。我想让观众快速浏览一下发布的链接。那些我想使用Where和Set的情况怎么样?什么是参数化的最佳方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个假设的情况,因为有人知道您的查询。如果您接受用户输入并将其连接到查询中,则可能会发生这种情况:

"MATCH (u:User) WHERE u.id = " + userId + " RETURN u"

让我们尝试一下userId:

"1 WITH count(1) AS dummy MATCH (u:User) OPTIONAL MATCH (u)-[r]-() DELETE u, r "

我确信有些人会提出更糟糕的例子......

这可以通过参数立即解决。你也可以消毒输入,但如果可能的话,我会采取安全的方式。