2012-08-26 59 views
0

有沒有在Doctrine ODM MongoDB查詢期間綁定參數的方法?綁定參數與Doctrine ODM(MongoDB)

$path = $this->objectManager->getRepository("MyBundle:MyDocument") 
    ->findOneBy(array("slug" => new MongoRegex("/^slug/"))) 
; 

這將不是必須進行字符串連接,其中slug出現在上面。

+1

我從來沒有編程教義,但是不工作?嘗試刪除/ ^/^ slug /是^ slug – Sammaye

+0

這不是我真正的問題。 –

+1

哦,你在尋找PDO類型綁定...對不起,誤讀。雖然這聽起來有點無用,但因爲SQL的主要問題是注入,因此需要參數化查詢,但mongodb並不真正受到這個問題的困擾。 – Sammaye

回答

2

簡而言之,您通常不必擔心與SQL injection相同類型的字符串注入問題,因爲發送到MongoDB服務器的請求採用對象格式(BSON),而不是字符串格式,如SQL。

典型的SQL注入攻擊涉及操縱將被連接成SQL查詢字符串的變量。 SQL綁定參數是通過轉義和/或類型檢查來限制可接受值的變量的佔位符。在BSON格式中,查詢的各個方面以對象格式保存,將對象的範圍限制爲該字段。

如果您通過執行server-side JavaScript執行的值(例如在$where查詢中),則必須謹慎過濾用戶提供的輸入。通常不鼓勵服務器端JavaScript,因爲它可能會對性能產生不利的影響。

欲瞭解更多信息,請參閱MongoDB維基頁面Do I have to worry about SQL Injection。當然實際上MongoDB中沒有SQL支持,所以這個頁面會更貼切地命名爲「我應該擔心參數注入攻擊」;-)。

+0

非常感謝你的這個小小的教訓!絕對有很多我必須重新來自SQL背景的東西。 –