2012-08-26 3 views
0

Doctrine ODM MongoDB 쿼리 중에 매개 변수를 바인딩하는 방법이 있습니까?Doctrine ODM (MongoDB)으로 매개 변수 바인딩하기

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

이것은 슬러그가 위에 나타나는 문자열 연결을 수행하는 대신에 수행됩니다.

+1

Doctrine을 프로그래밍 한 적이 없지만 작동하지 않습니까?/from/^ slug /를^슬러그로 제거해보십시오. – Sammaye

+0

그건 제가 실제로 가지고있는 문제는 아닙니다. –

+1

오, PDO 유형 바인딩을 찾고 있습니다 ... 미안합니다. 비록 SQL의 주된 문제는 사기성 매개 변수가 필요하기 때문에 사기성이 없기 때문에, mongodb는 실제로 당신이 보는 것처럼 그 문제로 고통받지 않습니다. – Sammaye

답변

2

MongoDB 서버에 전송 된 요청이 다음과 같은 문자열 형식이 아닌 객체 형식 (BSON)이기 때문에 일반적으로 SQL injection과 같은 범주의 문자열 삽입 문제에 대해 걱정할 필요가 없습니다. SQL.

일반적인 SQL 주입 공격에는 SQL 쿼리 문자열로 연결될 변수 조작이 포함됩니다. SQL 바인드 매개 변수는 이스케이프 및/또는 유형 검사를 통해 허용되는 값을 제한하는 변수의 자리 표시 자입니다. BSON 형식에서 쿼리 측면은 값 범위를 해당 필드로 제한하는 개체 형식으로 저장됩니다.

쿼리와 같이 server-side JavaScript 실행 값을 전달하는 경우 사용자 제공 입력을 필터링 할 때주의해야합니다. 서버 측 JavaScript는 일반적으로 성능에 악영향을 미칠 수 있으므로 권장하지 않습니다.

자세한 내용은 MongoDB wiki 페이지 Do I have to worry about SQL Injection을 참조하십시오. 물론 실제로는 MongoDB에는 SQL 지원이 없으므로이 페이지는 "매개 변수 삽입 공격에 대해 걱정해야합니까?"라는 메시지가 표시됩니다.

+0

이 작은 공과에 감사드립니다! SQL 배경에서 다시 돌아와야 할 많은 것들. –

관련 문제