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...
VISÃO GLOBAL - sobre IDoc O IDoc é um objeto SAP que transporta dados de uma transação comercial de um sistema para outro na forma de mensagem eletrônica.  IDoc é um acrônimo para  I  ntermediate  Doc  ument.  O objetivo de um IDoc é transferir dados ou informações do SAP para outros sistemas e vice-versa.  A transferência do SAP para o sistema não SAP é feita via subsistemas EDI (Electronic Data Interchange), enquanto para a transferência entre dois sistemas SAP, o ALE é usado. O IDoc pode ser acionado no sistema SAP ou no subsistema EDI. Isso depende da direção na qual o IDoc é enviado e é chamado como IDoc de entrada e IDoc de saída de acordo.  No caso de fluxo de saída, o IDoc é acionado no SAP por meio do controle de mensagens do documento, que é então enviado ao subsistema EDI. EDI converte os dados do IDoc em XML ou formato equivalente e, em seguida, envia os dados para o sistema parceiro através da Internet. Para o fluxo de entrad...