因此,我通过JDBC在基于SQL的数据库中使用PrepareStatements来防止SQL注入攻击。
我想知道如果使用Neo4J的Java API ExecutionEngine.execute(String,Map<String,Object>)
(见1)防止对Cypher的注入攻击,如果使用得当?
详细说明一下,如果早期执行参数替换,然后解析Cypher,我看不出这将如何帮助防止注入攻击,但如果解析Cypher,然后替换参数,那么我可以看到它如何防止注入攻击。
众所周知,JDBC/SQL中的PrepareStatements可以防止NoSQL攻击,我想确保使用ExecutionEngine.execute(String,Map<String,Object>)
将为我提供相同级别的保护。
谢谢! !
巴里是。它不是一个简单的字符串替换,它实际上首先被解析,查询对象被缓存,然后参数被填充。这对性能也有好处,因为它不需要在参数更改时重新解析查询。