MariaDB - Proteção de injeção de SQL

O simples ato de aceitar a entrada do usuário abre a porta para explorações. O problema decorre principalmente do gerenciamento lógico de dados, mas, felizmente, é bastante fácil evitar essas falhas principais.

Oportunidades para injeção de SQL normalmente ocorrem quando os usuários inserem dados como um nome e a lógica do código não consegue analisar essa entrada. O Código, em vez disso, permite que um invasor insira uma instrução MariaDB, que será executada no banco de dados.

Sempre considere os dados inseridos por usuários, suspeitos e precisam de uma validação forte antes de qualquer processamento. Execute esta validação por meio de correspondência de padrões. Por exemplo, se a entrada esperada for um nome de usuário, restrinja os caracteres inseridos a caracteres alfanuméricos e sublinhados e a um determinado comprimento. Reveja um exemplo fornecido abaixo -

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

Além disso, utilize o operador REGEXP e as cláusulas LIKE na criação de restrições de entrada.

Considere todos os tipos de controle explícito necessário de entrada, como -

  • Controle os caracteres de escape usados.

  • Controle os tipos de dados apropriados específicos para entrada. Limite a entrada ao tipo e tamanho de dados necessários.

  • Controle a sintaxe dos dados inseridos. Não permita nada fora do padrão necessário.

  • Controle os termos permitidos. Palavras-chave SQL da lista negra.

Você pode não conhecer os perigos dos ataques de injeção ou pode considerá-los insignificantes, mas eles estão no topo da lista de preocupações de segurança. Além disso, considere o efeito dessas duas entradas -

1=1
-or-
*

O código que permite que qualquer um deles seja inserido junto com o comando correto pode resultar na revelação de todos os dados do usuário no banco de dados ou na exclusão de todos os dados do banco de dados, e nenhuma das duas injecções é particularmente inteligente. Em alguns casos, os invasores nem perdem tempo examinando os furos; eles executam ataques cegos com uma entrada simples.

Além disso, considere as ferramentas de correspondência de padrões e expressão regular fornecidas por qualquer linguagem de programação / script emparelhada com MariaDB, que fornecem mais controle e, às vezes, melhor controle.