MySQL Injection é ato de inserir declaração MySQL em um banco de dados sem o conhecimento do proprietário do banco de dados . Ele geralmente é feito através da exploração de campos de entrada de usuários que não são protegidos adequadamente. Em vez de fornecer entrada real de que proprietário do banco de dados pediu , o usuário injeta uma instrução MySQL que muda o comportamento da consulta para dar a capacidade do usuário injeção para manipular o banco de dados. Injeções MySQL  
 A maneira mais fácil de entender e aprender o que realmente injeção MySQL doesis para dar uma olhada em um exemplo. Uma das maneiras mais populares de usar MySQLinjections é ignorar as verificações de login em sites . Aqui está um exemplo de awebsite que está usando o seguinte formulário para autenticar o usuário : 
 
 
   depois de pressionar enviar dados inseridos é, então, enviado para a página userlogin.php que recebe e passa por uma consulta no banco de dados para verificar o nível de acesso do usuário tem e se ele entrou no nome de usuário e senha corretamente. 
 
 < ? $ username = $ _POST [ 'username' ]; $ password = $ _POST [ 'password' ]; $ query = "SELECT nome de usuário , senha FROM utilizadores WHERE username = '$ username' e senha = '$ senha '"; ? > 
 
 Esse tipo de formulário de login é aberta à exploração por ataques de injeção de MySQL . Para ter acesso ao site a qualquer usuário pode inserir o seguinte código: 'OR 1 = 1 - o nome de usuário e' OR 1 = 1 para senha 
 
 consulta vai ficar assim : $ query = "SELECT nome de usuário . , senha FROM utilizadores WHERE username = '' oR 1 = 1 - ' e senha ='' oR 1 = 1 "; 
 
 Esta consulta irá selecionar nome de usuário e senha de usuários onde não existem nomes de usuário ou senha ( '' parte) ou se um é igual a um. Como um é igual a um , em todos os casos, a segurança da base de dados fica comprometida . Dois traços antes apóstrofo foram adicionados para tornar MySQL ignorar apóstrofo que é agora redundante. Este é apenas um tipo de ataque usando injeção MySQL . Outra variação deste ataque é getaccess para mais informações do que é permitido ao usuário . 
 
 Agora olhar para um exemplo onde o proprietário do banco de dados está usando o seguinte queryto obter dados para exibição em informações da conta do usuário da página . 
 
 $ query = "SELECT * FROM utilizadores WHERE username = '$ nome '"; 
 
 Se esse tipo de consulta não está protegido usuário mal-intencionado é capaz de input'OR 1 = 1 - a verificação de nome de usuário manual. $ query = "SELECT * FROM utilizadores WHERE username = '' OR 1 = 1 - '"; Esta consulta agora não vai selecionar apenas os dados do usuário , mas os dados de todos os usuários na tabela "usuários " 
 < br. > 
 proteção contra MySQL injeções 
 
 Há muitas maneiras de se proteger contra injeções MySQL . Na verdade injeções MySQL são ameaças só se o desenvolvedor ignorou a ameaça e falharam em proteger seu código. A maneira mais fácil de proteger contra injeções em PHP e MySQL combinação é usar a função PHP: . . ? " Mysql_real_escape_string " 
 
 Voltando ao primeiro exemplo <$ username = $ _POST [ 'username' ]; $ password = $ _POST [ 'password' ]; $ query = "SELECT nome de usuário , senha FROM utilizadores WHERE username = '$ username' e senha = '$ senha '"; ? > 
 
 Para se proteger contra injeções MySQL usos diretos de entradas do usuário deve befiltered através de " mysql_real_escape_string " . . ? Function " mysql_real_escape_string " escaparão todos os caracteres especiais MySQL removendo possibilidade de mudar o comportamento de nossa consulta 
 
 < $ username = mysql_real_escape_string ( $ _POST [ 'username' ]); $ password = mysql_real_escape_string ( $ _POST [ ,"'password' ]); $ query = "SELECT nome de usuário , senha FROM utilizadores WHERE username = '$ username' e senha = '$ senha '"; >