Pular para o conteúdo principal

Métodos para previnir SQL Injection


Um dia desses, estava prestando suporte a um sistema web crítico de uma grande companhia. Para minha surpresa, descobri naquela ocasião, que a aplicação possuía uma série de vulnerabilidades bem conhecidas, sendo uma delas, brechas imensas para o famoso SQL Injection
SQL Injection é um ataque no qual código malicioso é passado para um servidor SQL, que o executa. O ataque pode resultar em acesso não autorizado a dados confidenciais, ou destruição de dados críticos.
Antes de tentar os métodos a seguir, perceba que isso só deve ser uma preocupação para desenvolvedores PHP e afins. Se você estiver usando um CMS ou sistemas de lojas virtuais (por exemplo, WordPress, Joomla, Drupal, OsCommerce), então tudo o que precisa fazer é atualizá-los para a versão mais recente estável disponível.

Métodos para previnir SQL Injection
Escapando
Uma forma de evitar as injeções é evitar caracteres perigosos (ou seja, barra invertida, apóstrofo e ponto e vírgula). No PHP, é típico utilizar a técnica de “escaping” na entrada usando a funçãomysql_real_escape_string antes de enviar a consulta SQL.

Exemplo:
$Uname = mysql_real_escape_string($Uname);
$Pword = mysql_real_escape_string($Pword);
$query = “SELECT * FROM Users where UserName=’$Uname’ and Password=’$Pword’”;
mysql_query($query);
Declarações parametrizadas

Uma consulta parametrizada usa espaços reservados para a entrada, e os valores dos parâmetros são fornecidos em tempo de execução.
$params = array($Uname, $Pword);
$sql = ‘INSERT INTO Users (UserName, Password) VALUES (?, ?)’;
$query = sqlsrv_query($connection, $sql, $params);
Avançado: No PHP versão 5 e superior, existem várias opções para a utilização de declarações com parâmetros, a camada de banco de dados DOP é uma delas. Existem também métodos específicos de fornecedores: por exemplo, o MySQL 4.1 + usado com a extensão mysqli.

Comentários

Postagens mais visitadas deste blog

Saída de mercadorias (MIGO_GI)

Saída Logística - Administração de Materiais - Administração de Estoques - Movimento mercadoria (MIGO) - Saída de mercadorias (MIGO_GI) - Saída de mercadorias (MB1A) Uma saída de mercadoria (SM) é a retirada de material do estoque, seja para consumo ou expedição para um cliente. Tipo de movimento - 201 – Consumo de mercadoria para centro de custos vindo do depósito - 221 – Consumo de mercadoria para projeto vindo do depósito - 261 – Consumo para ordem vindo do depósito - 281 – Consumo para diagrama de rede vindo do depósito - 541 – Subcontratação: remessa dos componentes de livre utilizável para fornecedor - 551 – Retirada para sucata de livre utilizável As opções da transação MIGO_GI são: Saída e Estorno. Campos a serem preenchidos para Saída de Mercadoria: - Selecionar “Saída de mercadorias” - Entrar com os dados dos itens a serem retirados do depósito: o Material o Quantidade o Centro o Depósito o Centro de Custo (obrigatório dependendo do tipo de saída) Campos...

sap_basis (Monitoramento do SAP Basis)

sap_basis (Monitoramento do SAP Basis) O probe sap_basis (SAP Basis Monitoring - Monitoramento do SAP Basis) monitora a integridade e o desempenho do cenário SAP. Este probe ajuda as empresas a monitorarem seus aplicativos SAP críticos à missão. O probe sap_basis pode monitorar as instâncias do SAP, as instâncias de banco de dados e sistemas de arquivos, que são os principais componentes de uma implantação do SAP Basis. Consulte Métricas do sap_basis para compreender os recursos de monitoramento do probe. O probe permite que os administradores do Basis tenham uma visão holística do ambiente SAP Basis e os ajuda a detectar problemas antes que eles afetem os usuários finais. Com esse probe, a equipe do Basis pode monitorar o desempenho de seus aplicativos em um único console, ver os alertas assim que as ocorrências surgem, diagnosticar e solucionar os problemas, acompanhar as tendências e planejar usando os gráficos no USM (Unified...

Execução de Jobs em segundo plano no SAP

As tarefas em segundo plano no sistema SAP são executadas em segundo plano sem afetar as operações normais no sistema.  Esses trabalhos são usados ​​para reduzir o esforço manual e automatizar o processo.  Eles podem ser executados em segundo plano sem qualquer entrada do usuário e podem ser programadas para serem executadas quando o carregamento do sistema estiver baixo. Jobs em segundo plano podem ser divididos em três categorias - Classe A (alta prioridade) Isso é usado para tarefas urgentes ou críticas e deve ser agendado como Jobs prioritário de classe A.  O Job de Classe A reserva um ou mais processos de trabalho em segundo plano. Classe B (Prioridade Média) Esses Jobs são executados após a conclusão de trabalhos de alta prioridade da Classe A. Classe C (baixa prioridade) Os Jobs nessa categoria são executados depois que as tarefas de classe A e de classe B são concluídas.