Skip to content

Latest commit

 

History

History
51 lines (32 loc) · 3.39 KB

ormodmusage.brazilian-portuguese.md

File metadata and controls

51 lines (32 loc) · 3.39 KB

Impeça vulnerabilidades de query injection com bibliotecas ORM/ODM

Explicação em um Parágrafo

Ao criar sua lógica de banco de dados, você deve estar atento a eventuais pontos de injeção que possam ser explorados por possíveis invasores. Escrever consultas de banco de dados manualmente ou não, incluindo a validação de dados para solicitações do usuário, são os métodos mais fáceis para permitir essas vulnerabilidades. No entanto, é fácil evitar essa situação quando você usa pacotes adequados para validar entradas e manipular operações do banco de dados. Em muitos casos, seu sistema estará são e salvo usando uma biblioteca de validação como joi ou yup e uma biblioteca ORM/ODM da lista abaixo. Isso deve garantir o uso de consultas parametrizadas e vinculações de dados para garantir que os dados validados sejam adequadamente ignorados e manipulados sem abrir vetores de ataque indesejados. Muitas dessas bibliotecas facilitarão sua vida como desenvolvedor, ativando muitos recursos úteis, como não ter que escrever consultas complexas manualmente, fornecendo tipos para sistemas de tipos baseados em idioma ou convertendo tipos de dados em formatos desejados. Para concluir, sempre valide todos os dados que você irá armazenar e use bibliotecas de mapeamento de dados adequadas para lidar com o trabalho perigoso para você.

Bibliotecas

Exemplo - Injeção de consulta NoSQL

// Uma consulta de
db.balances.find( { active: true, $where: function() { return obj.credits - obj.debits < userInput; } } );

// Onde userInput igual a
"(function(){var date = new Date(); do{curDate = new Date();}while(curDate-date<10000); return Math.max();})()"

// irá desencadear uma negação de serviço

// Outra entrada do usuário pode injetar outra lógica, resultando no banco de dados expondo dados sensíveis

Exemplo - Injeção SQL

SELECT username, firstname, lastname FROM users WHERE id = 'user input';

SELECT username, firstname, lastname FROM users WHERE id = 'evil'input';

Recursos adicionais

🔗 OWASP Injeção SQL

🔗 OWASP Folha de Dicas de Prevenção de Injeção SQL

🔗 Teste para Injeções NoSQL

O que outros Blogueiros dizem

Riscos de injeção NoSQL da OWASP wiki

Ataques de injeção NoSQL podem ser executados em áreas diferentes do que uma injeção SQL tradicional em uma aplicação. Onde a injeção SQL seria executada no mecanismo do banco de dados, as variantes do NoSQL podem ser executadas na camada da aplicação ou na camada do banco de dados, dependendo da API NoSQL usada e do modelo de dados. Normalmente, os ataques de injeção NoSQL executarão onde a sequência de ataque é analisada, avaliada ou concatenada em uma chamada de API NoSQL.