복붙노트

[MONGODB] 어떻게 MongoDB를은 SQL 주입 혼란을 피하기는 무엇입니까?

MONGODB

어떻게 MongoDB를은 SQL 주입 혼란을 피하기는 무엇입니까?

나는 나의 신뢰할 수있는 오라일리 책을 읽고 몽고가, 자연, 결함 주입과 같은 SQL의 소택지를 방지하는 방법에 대 한 통로를 건너 왔어요했다.

내 직감에, 나는 이것을 이해 생각한다. unsanitized 바르 쿼리에 전달하는 경우, 그들은, 가입, 쿼리 설정 주석 등 UNION과 문서 지향 쿼리 구조의 탈옥 수 없습니다

어떻게 MongoDB를은 SQL 주입 혼란을 피하기는 무엇입니까? 그냥이 쿼리 구문의 본질인가?

해결법

  1. ==============================

    1.MongoDB를 구문 분석하지 않음으로써 문제가 발생할 가능성을 방지 할 수 있습니다.

    MongoDB를 구문 분석하지 않음으로써 문제가 발생할 가능성을 방지 할 수 있습니다.

    구문 분석됩니다 형식의 텍스트에 사용자 데이터를 인코딩 포함 어디서나 모든 API는 텍스트를 구문 분석하는 방법에 동의 할 수있는 발신자 및 수신자에 대한 가능성이있다. 데이터를 메타 데이터로 잘못 해석하는 경우 이러한 불일치는 보안 문제가 될 수 있습니다. 이것은 당신이 HTML에서 사용자 생성 콘텐츠, 또는 생성 SQL을 포함 printf와 형식 문자열에 대해 이야기하고 있는지 사실이다.

    MongoDB를 구문 분석 무엇을 알아 내기 위해 텍스트를 구성하지 않기 때문에,이 지침대로 사용자 입력을 잘못 해석 할 가능성은 없으며, 따라서 어떤 가능한 보안 구멍.

    덧붙여 분석을 필요로 피 API를 조언 http://cr.yp.to/qmail/guarantee.html에 항목 5입니다. 당신은 보안 소프트웨어를 작성에 관심이 있다면, 다른 6 개 제안뿐만 아니라보고 가치가있다.

    업데이트 (2018) : I로 원래의 대답은 내 지식의 최선을 진정한 남아했다. 다시 전송됩니다 무슨 MongoDB를 보내 무엇의 관점에서, 어떤 SQL 인젝션 공격이 없습니다. 주입 공격은 내가 MongoDB를 외부에서 발생 알고 있어요 있고 MongoDB에 전달 될 데이터 구조를 설정하는 방법 외부 언어와 라이브러리의 문제는 사실이다. 또한 취약점의 위치 데이터 구조가되기위한 방법에 해석되는 방식의 데이터이다. 따라서 원래의 대답은 정확하게 피하기 주입 공격에 두 방법을 설명하고, 어떻게 그 위험에서 당신을 저장합니다.

    하지만이 정도는 자신의 코드에서 명확하지 않았다 결함 주입 공격에 의해 명중하는 프로그래머에게 차가운 편안함이다. 우리의 거의는 외부 도구와 우리의 코드 사이의 모든 레이어와 그 외부 도구 구분합니다. 그리고 그것은 우리의 부분에 경계를 필요로한다는 사실 남아 예측하고 가까운 주입 공격 끕니다. 모든 도구와. 그리고 이것은 가까운 장래의 경우 유지됩니다.

  2. ==============================

    2.MongoDB의 설명서를 요약하면

    MongoDB의 설명서를 요약하면

    그러나, MongoDB를 주입 공격으로부터 면역이 아니다. 같은 문서에서 언급 한 바와 같이 MongoDB의 동작은 임의의 JavaScript 식 서버에서 직접 실행될 수있는 바와 같이, 인젝션 공격은 여전히 ​​가능하다. 문서는 자세하게로 전환 :

    http://docs.mongodb.org/manual/faq/developers/#javascript

  3. ==============================

    3.PHP와 MongoDB가 없음-SQL 주입에 취약 될 수 있습니다 :

    PHP와 MongoDB가 없음-SQL 주입에 취약 될 수 있습니다 :

    http://www.idontplaydarts.com/2010/07/mongodb-is-vulnerable-to-sql-injection-in-php-at-least/

    http://www.php.net/manual/en/mongo.security.php

  4. ==============================

    4.SQL 주입을 방지하기 위해, 클라이언트는 MongoDB를의 언어 API를 사용할 수 있습니다. 이 방법은 모든 입력 값은 단순 - 명령이 분사 될 수 없다. 자바 예 :

    SQL 주입을 방지하기 위해, 클라이언트는 MongoDB를의 언어 API를 사용할 수 있습니다. 이 방법은 모든 입력 값은 단순 - 명령이 분사 될 수 없다. 자바 예 :

    collection.find (Filters.eq ( "키", "입력 값"))

    단점은 쉽게 필터를 테스트 할 수 있다는 것입니다. 당신은 몽고의 쉘에 복사하고 테스트 할 수 없습니다. 더 큰, 더 복잡한 필터 / 쿼리와 특히 문제.

    그러나!!! 어떤 JSON 필터를 구문 분석 가능 - 필터의 API를 사용하지하는 API도 있습니다. 자바의 예를 아래 :

    collection.find(BasicDBObject.parse("{key: "input value"}"));
    

    당신이 그것을 테스트하기 위해 MongoDB의 쉘에 직접 필터를 복사 할 수 있기 때문에 좋은 것입니다.

    그러나!!! (I 약속, 마지막으로)이 NoSQL에 주입하는 경향이있다. 자바 예컨대, 입력 값이된다 {$ ''}이다.

    collection.find(BasicDBObject.parse("{key: {$gt: ""}}"));
    

    이 마지막 예에서, 모든 것이 우리가 반환에 대한 구체적인 기록 만 의미에도 불구하고, 반환됩니다.

    직접 필터를 사용하는 경우 여기에 SQL 주입에 대한보다 철저한 설명을 참조하십시오.

    마지막 한가지. 나는 두 원시 필터를 사용하여 여전히 SQL 주입을 방지 할 수있는 방법이 있다고 생각. 예를 들어, 자바, 우리는 Jongo의 매개 변수화 된 쿼리를 사용할 수 있습니다.

  5. ==============================

    5.데이터베이스는 내용을 구문 분석 할 수 있지만 취약한 코드의 다른 영역이있다.

    데이터베이스는 내용을 구문 분석 할 수 있지만 취약한 코드의 다른 영역이있다.

    https://www.owasp.org/index.php/Testing_for_NoSQL_injection

  6. from https://stackoverflow.com/questions/5021456/how-does-mongodb-avoid-the-sql-injection-mess by cc-by-sa and MIT license