Vídeos Relacionados: Minicurso ASP .NET Core 2.0 - Injeção de dependência (Pode 2024).

ASP.net MVC - Injeção de SQL

{title}

Existem muitos tipos de ataques que podemos receber em nossos aplicativos, um dos mais comuns e que podem gerar muitos danos é a injeção de SQL ; esse ataque consiste em encontrar vulnerabilidades na maneira como lidamos com consultas de banco de dados extrair informações ou inserir valores que possam afetar sua funcionalidade.
Para nos proteger contra esses tipos de ataques, precisamos primeiro saber o que é, para que possamos aprender que tipo de precauções devemos tomar.

Injeção de SQL


Como mencionamos, esse ataque faz com que nosso banco de dados não funcione corretamente; para isso, o invasor insere dados que fazem com que nossas consultas falhem de acordo com certas vulnerabilidades; com isso, o invasor pode tentar obter os esquemas de nossas tabelas ou inserir dados que pode comprometer a operação, como inserir um usuário para acessar a seção administrativa de nosso aplicativo .
Uma das maneiras mais comuns é inserir parâmetros diretamente à medida que os recebemos dos controladores; por exemplo, fazemos uma pesquisa por categorias e recebemos do controlador o identificador de uma categoria a ser pesquisada; se ela passar diretamente sem limpeza, pode gerar um ataque que mostre ao invasor todas as categorias existentes.
Vejamos o seguinte código não seguro:

{title}


Podemos ver como na linha 6 construímos a condição de pesquisa e, na linha 10, passamos diretamente para o método que configura a consulta, um olho com pouca experiência pode não encontrar nenhum problema, mas se um invasor digitar o seguinte parâmetro: " 1 ou 1 = 1 ” pode obter a lista de toda a nossa tabela.
Como nos proteger?

A maneira de nos protegermos, neste caso, passa por duas etapas básicas, a primeira é que não podemos permitir que os dados sejam executados diretamente à medida que os recebemos, pois antes da consulta devemos limpar o parâmetro com um método que procure por caracteres ilegais e em Se encontrado, envie o usuário para uma página 404 ou página não encontrada.
Vamos ver no código a seguir como podemos filtrar o que recebemos:

{title}


Aqui revisamos com uma expressão regular que apenas nosso controlador recebe números; caso contrário, enviamos uma mensagem, todos podem fazer sua versão, mas o importante é controlar o que nosso aplicativo receberá.
O segundo passo para evitar ataques é não trabalhar com o curinga "*" e sempre limitar as consultas quando aguardamos um registro, para evitar a exposição de todos os dados, caso alguém consiga exceder nossas previsões.
Capturar exceções

Por fim, se um parâmetro ilegal entrar em nosso aplicativo, devemos evitar a todo custo o rastreio do erro, pois ele possui dados confidenciais de nossa instalação e pode ser usado contra nós, portanto, sempre devemos capturar as exceções e envia uma mensagem personalizada que não possui muitos detalhes, pois esses detalhes podem ser vistos no ambiente de desenvolvimento.
Como pudemos ver, conhecer os ataques nos dá uma perspectiva diferente de como podemos proteger nosso aplicativo e como dar mais segurança aos nossos usuários.

  • 0 0