Request Injection Attacks

Se você estiver passando parâmetros $_GET (ou $_POST) para suas consultas, certifique-se de que eles sejam convertidos em strings primeiro. Os usuários podem inserir matrizes associativas em solicitações GET e POST, que podem se tornar consultas indesejadas.

Um exemplo bastante inócuo: suponha que você esteja procurando informações de um usuário com a solicitação http://www.example.com?username=bob. Sua aplicação cria a consulta $q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ]).

Alguém poderia subverter isso obtendo http://www.example.com?username[$ne]=foo, que o PHP transformará magicamente em um array associativo, transformando sua consulta em $q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] ), que retornará todos os usuários não nomeados "foo" (todos os seus usuários, provavelmente).

Este é um ataque bastante fácil de se defender: certifique-se de que os parâmetros $_GET e $_POST sejam do tipo que você espera antes de enviá-los ao banco de dados. O PHP tem a função filter_var() para ajudar nisso.

Observe que esse tipo de ataque pode ser usado com qualquer interação de banco de dados que localize um documento, incluindo atualizações, inclusões, exclusões e comandos findAndModify.

Consulte » a documentação principal para obter mais informações sobre problemas semelhantes à injeção de SQL com o MongoDB.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top