【问题标题】:Will ExecutionEngine.execute(String,Map<String,Object>) prevent "NoSQL Injection Attacks"?ExecutionEngine.execute(String,Map<String,Object>) 会阻止“NoSQL 注入攻击”吗?
【发布时间】:2013-05-05 15:17:19
【问题描述】:

所以,我通过 JDBC 在基于 SQL 的数据库中使用 PrepareStatements 来防止 SQL 注入攻击。

我想知道如果使用得当,使用 Neo4J 的 Java API ExecutionEngine.execute(String,Map&lt;String,Object&gt;)(参见 1)是否可以防止对 Cypher 的注入攻击?

详细说明,如果参数的替换提前执行然后解析 Cypher,我看不出这将如何帮助防止注入攻击,但如果解析 Cypher 然后稍后替换参数,然后我可以看到它如何防止注入攻击。

众所周知,JDBC/SQL 中的 PrepareStatements 可以防止 NoSQL 攻击,我想确保使用 ExecutionEngine.execute(String,Map&lt;String,Object&gt;) 可以为我提供相同级别的保护。

谢谢!!

巴里

【问题讨论】:

    标签: prepared-statement neo4j sql-injection cypher


    【解决方案1】:

    是的。这不是简单的字符串替换,它实际上是先解析,缓存查询对象,然后填充参数。这对性能也有好处,因为只需更改参数就不需要重新解析查询。

    【讨论】:

    • docs.neo4j.org/chunked/stable/cypher-parameters.html 上,Brad 写道:“啊,好吧,这很有道理,谢谢 Peter。我想我更多地考虑的是防止 Cypher 注入攻击的参数,我想在这些情况下我应该只是写我自己的保障?”并由 Peter Neubauer 回答,他写道:“是的,这可能是目前最简单的解决方案 :)”。任何人都可以对此发表评论吗?这似乎与上面的答案直接矛盾。
    猜你喜欢
    • 2020-08-01
    • 2018-09-22
    • 1970-01-01
    • 2019-12-18
    • 2019-04-28
    • 1970-01-01
    • 2013-05-24
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多