2014-01-21 89 views
3

我想知道就像在傳統的RDMS中有SQL注入一樣,所以在PHP中我們使用PDO進行注入預防,但是我們用什麼來防止注入Neo4j。我通過jquery和neo4jphp模塊使用neo4j RST api ..所以,任何建議傢伙。neo4j db注入保護

在此先感謝..

回答

3

一個使用Web服務的價值是從服務實現解耦客戶端。就你而言,這意味着REST會抽象出Neo4jPHP代表你的Cypher查詢的細節。所以防止注入的責任落在Neo4jPHP上。這是一個實現細節。即使你想要,你也不應該修補它。

的情況是,如果你做的Cypher查詢自己的不同。那麼你可以使用參數如下:

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

我建議你寫的Neo4jPHP論壇,以確保他們確實寫參數的Cypher查詢採取這些預防措施。或look at the source並自行驗證。

2

Neo4jPHP JSON編碼發送到服務器的Neo4j所有值。 Cypher查詢以參數值的散列形式發送。就像使用SQL一樣,您不應該直接從用戶輸入中構建您的Cypher查詢。相反,使用帶有參數的Cypher查詢,Neo4j服務器將正確處理這些參數。

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