2013-02-03 3 views
0

나는 SQL 인젝션을 알고 있고, orm injection이라 불리는 nosql도 마찬가지라고 생각합니다.
나는 pymongo와 mongodb를 사용하고 있으며, 사용자가 간단한 find()와 $ regexp 연산자를 사용하여 입력을 제어한다.
입력 내용을 'sanitize'하는 방법은 무엇입니까?Pymongo ORM 주입? 살균 입력

+0

나는 이것에 대한 또 다른 답을 썼다 : http://stackoverflow.com/questions/13099301/nosql-injection-in-python/13100786#13100786 – Sammaye

답변

1

ORM 주입으로 말하면 실제로는 MongoDB 또는 NoSQL 시스템이 아닌 관계형 데이터베이스 시스템에 대해서 말합니다. PyMongo는 ORM 도구가 아니므로 ORM 주입이 수행되지 않습니다.

MongoDB 찾기 작업은 컬렉션의 데이터를 수정하거나 삭제하지 않습니다. 신뢰할 수없는 인풋으로는 안전합니다. ,

{"$where": "function() { for (var i=0; i<1000000; i++) {}; return true; }"} 

이 코드에서 확인 할 수 없음을 의미하는 것이 : here를 설명한 바와 같이, 일어날 수

있는 유일한 방법은, 나쁜 쿼리를 이런 식으로 뭔가를 수행하여 시스템을 늦출 수 없다고입니다 기능은 사용자 매개 변수를 통해 전송됩니다.

+0

당신은 무엇을 의미 하는가? 이것은 당신이 당신의 코드에서 확실하게 할 수 있다는 것을 의미한다. 어떤 기능도 사용자 매개 변수를 통해 전송되지 않습니다. " 제발 우리에게 모범을 가져다 주시겠습니까? – tapioco123

+0

나는 이미 예제를 주었다. 사용자가 내 대답에 나와있는 것처럼 Where 문을 쓰지 않았는지 확인하십시오. 예를 들어 where 문자열에 하위 문자열 "function()"이 포함되지 않았는지 확인하십시오. – thomas

+0

나는 $가 없다. 단지 e $ regexp이다. 아니면 뭔가 빠졌나요? – tapioco123