2014-01-21 4 views
3

나는 기존의 RDMS와 마찬가지로 SQL 주입이 가능하므로 PHP에서 PDO를 사용하여 주입 예방에 사용하지만 Neo4j에서 주입을 막기 위해 사용하는 것은 무엇입니까? 나는 jQuery와 neo4jphp 모듈을 통해 neo4j RST API를 사용하고 있습니다. 그래서 어떤 제안을하는 사람들 이죠. 사전에neo4j db injection protection

감사합니다 .. 웹 서비스를 사용하는 값의

답변

3

하나는 서비스의 구현에서 클라이언트 디커플링된다. 귀하의 경우, 이것은 REST가 Neo4jPHP가 귀하를 대신하여 작성한 Cypher 쿼리의 세부 사항을 추상화한다는 것을 의미합니다. 그래서 주사를 방지하는 책임은 Neo4jPHP에 있습니다. 이것이 구현 세부 사항입니다. 당신이 원한다고해도 그걸로 고칠 수 없어야합니다.

Cypher 쿼리를 직접 작성하는 경우와 상황이 다릅니다. 그럼 당신은 다음과 같은 매개 변수를 사용합니다 :

query = "START n=node(*) WHERE n={search} RETURN n" 
db.query query, {search: "userProvidedValue"} 

난 당신이 Neo4jPHP 포럼에 쓸 제안들이 실제로 매개 변수 사이퍼 쿼리를 작성하여 이러한 예방 조치를 수행했는지 확인 할 수 있습니다. 또는 look at the source 및 직접 확인하십시오.

2

Neo4jPHP JSON은 Neo4j 서버로 전송 된 모든 값을 인코딩합니다. Cypher 쿼리는 매개 변수 값의 해시와 함께 전송됩니다. SQL과 마찬가지로 사용자 입력에서 직접 Cypher 쿼리를 작성하면 안됩니다. 대신 Neo4j 서버가 올바르게 처리 할 매개 변수가있는 Cypher 쿼리를 사용하십시오. 여기

Neo4jphp 워드 프로세서 : 여기 https://github.com/jadell/neo4jphp/wiki/Cypher-and-gremlin-queries#executing-a-cypher-query

Neo4j REST 워드 프로세서 : http://docs.neo4j.org/chunked/stable/rest-api-cypher.html#rest-api-use-parameters

관련 문제