PHP: Função Anti-SQL Injection
PHP: Função Anti-SQL Injection

Olá Galera, hoje vamos falar sobre outro assunto muito importante para desenvolvedores PHP, que é a segurança e a prevenção de fraudes, invasões e outros males que são causados por SQL Injection.
Mas o que é o tal “SQL Injection” ?? Bom, vamos a explicação então…

SQL Injection (ou Injeção de SQL) trata-se da manipulação de uma instrução SQL através das variáveis que compõem os parâmetros recebidos por um script, tal como PHP, ASP, JSP, ColdFusion, etc.
O principal motivo pelo qual deve-se impossibilitar a utilização da SQL Injection está no fato de que, através de uma simples instrução SQL, como por exemplo, uma projeção de dados, outras operações podem ser executadas, podendo impactar sobre o esquema das tabelas, os dados armazenados, e até mesmo sobre elementos do sistema operacional, tendo em vista que alguns bancos de dados permitem a execução de comandos do shell do próprio sistema operacional, na maioria dos casos, SQL Injection são utilizados para logar em sistema, ou causar danos a tabelas do Banco de Dados. (Descrição de SQL Injection clipada do site iMasters)

Vamos então a uma função que encontrei em pesquisas na Internet, e adaptei ela, inclui alguns parâmetros, etc, para que assim ela ficasse mais completa e funcional. Essa função pode ser utilizada a qualquer momento em seu script PHP para filtrar/limpar algum dado proveniente de formulários/seções/cookies, afinal existem diversos métodos utilizados para as fraudes. Lembrando que esse script é apenas um exemplo prático, de uma das formas de prevenir a SQL Injection, pois existem inumeras ações que podemos realizar para prevenir.

Como o sistema do WordPress que é o script de Blog que utilizamos possui um sistema de SQL Injection, não tenho como inserir os códigos aqui, como em outros artigos sobre PHP, então para utilizar a função, você terá de fazer download do arquivo com a função Anti-SQL Injection e exemplo de uso clicando aqui.

15 de maio de 2008
Categoria(s): Banco de Dados, MySQL, PHP
Faça sua parte, divulgue o Post !!
  • Twitter
  • Google Buzz
  • Digg
  • Delicious
  • Stumbleupon
  • Technorati
  • Reddit
  • Facebook
  • LinkedIn
  • E-mail
Você pode gostar de ver:
Sobre o Autor
Rodrigo Luis
Trabalho com desenvolvimento WEB há cerca de 10 anos, e com programação em PHP há 7~8 anos. Tenho conhecimento em diversas linguagens, mas meu domínio é especifico em PHP, JavaScript, CSS e HTML/XHTML, tenho algum conhecimento em MySQL. Além disso é claro, tenho domínio sobre ferramentas gráficas como Adobe Fireworks e Photoshop, e CorelDRAW. Sou um fã de Tecnologia de tudo que é tipo, seja relacionada a internet ou mesmo a tecnologia de hardware. Minha formação acadêmica (cursando) é na área de Design, mas estou rumando para a área criativa da Publicidade e Propaganda.
Exibir Pingbacks/Trackbacks
Comentários (10)
Exibir Comentários
Pingbacks/Trackbacks (0)
  • Mayko disse:

    É…
    Injeção SQL é um caso sério.
    Uso uma função aqui há tempos já para proteção, mas vou dar uma conferida nessa!

    Ótimo post, vlw!!

    []‘s

    quinta-feira, 15 de maio de 2008 às 17:05
  • Vinicius disse:

    É uma pena que esse arquivo não esteja mais disponivel para download. Será que tem como postar novamente?? Agradeço.

    quarta-feira, 01 de julho de 2009 às 7:11
    • Rodrigo Luis disse:

      Olá Vinicius, já atualizei o link com o arquivo novamente para download. Desculpe este problema, mas foi algo que aconteceu no EasyShare, que era onde o arquivo estava armazenado.

      quarta-feira, 01 de julho de 2009 às 8:49
  • luciano disse:

    Eu fiz download do arquivo. Agora gostaria de saber como colocar na prática? e que sou inciante em programação para web, e meu site ja foi invadido por sql injection.

    sexta-feira, 17 de julho de 2009 às 23:53
    • Rodrigo Luis disse:

      Olá Luciano, para utilizar o script, você deve seguir o modelo de exemplo que está no script.

      segunda-feira, 20 de julho de 2009 às 11:17
  • luiz disse:

    function anti_injection($sql)
    {
    // remove palavras que contenham sintaxe sql
    $sql = preg_replace(sql_regcase(“/(from|select|insert|delete|where|drop table|show tables|#|\*|–|\\\\)/”),”",$sql);
    $sql = trim($sql);//limpa espaços vazio
    $sql = strip_tags($sql);//tira tags html e php
    $sql = addslashes($sql);//Adiciona barras invertidas a uma string
    return $sql;
    }

    //modo de usar pegando dados vindos do formulario
    $nome = anti_injection($_POST["nome"]);
    $senha = anti_injection($_POST["senha"]);

    ?>

    segunda-feira, 26 de abril de 2010 às 2:01
  • Rodrigo Luis disse:

    Parabéns Luiz,

    Excelente função anti sql-injection.

    segunda-feira, 26 de abril de 2010 às 9:10
  • rubson disse:

    trabalho na area técnica de projeto.
    alguém usa o qcad ?
    eu o utilizo a um bom tempo no linux
    gostaria de trocar impressões.
    ok.

    sexta-feira, 07 de maio de 2010 às 11:03
  • leandro disse:

    rodrigo to usando seu cod anti injection e to recebendo o erro Fatal error: Call to undefined function anti_sql() in C:wampwwwsitioadmverifica.php on line 51

    <?
    function anti_sql($texto){
    // Lista de palavras para procurar
    $check[1] = chr(34); // símbolo "
    $check[2] = chr(39); // símbolo '
    $check[3] = chr(92); // símbolo /
    $check[4] = chr(96); // símbolo `
    $check[5] = "drop table";
    $check[6] = "update";
    $check[7] = "alter table";
    $check[8] = "drop database";
    $check[9] = "drop";
    $check[10] = "select";
    $check[11] = "delete";
    $check[12] = "insert";
    $check[13] = "alter";
    $check[14] = "destroy";
    $check[15] = "table";
    $check[16] = "database";
    $check[17] = "union";
    $check[18] = "TABLE_NAME";
    $check[19] = "1=1";
    $check[20] = 'or 1';
    $check[21] = 'exec';
    $check[22] = 'INFORMATION_SCHEMA';
    $check[23] = 'like';
    $check[24] = 'COLUMNS';
    $check[25] = 'into';
    $check[26] = 'VALUES';

    // Cria se as variáveis $y e $x para controle no WHILE que fará a busca e substituição
    $y = 1;
    $x = sizeof($check);
    // Faz-se o WHILE, procurando alguma das palavras especificadas acima, caso encontre alguma delas, este script substituirá por um espaço em branco " ".
    while($y

    <?php

    $apelido = anti_sql($_POST["apelido"]);
    $senha = anti_sql($_POST["senha"]);

    $selecao = mysql_query("SELECT * FROM admin WHERE apelido = '$apelido' AND senha = '$senha' ") or die (mysql_error());

    $row = mysql_fetch_array($selecao);

    if ($row == "")
    {
    echo "apelido e/ou senha inválidos.”;
    echo “”;
    echo “Voltar”;
    exit;
    }
    else
    {
    session_start();

    $_SESSION["apelido"] = $apelido;

    header (“location:index.php”);
    }

    mysql_close($conexao);
    ?>

    terça-feira, 11 de maio de 2010 às 16:28
  • 10°

    Rodrigo Luis disse:

    Olá Leandro,
    Verifique seu código, pois o mesmo tem erros de script, exemplo, tem um while pela metade, sem o resto das especificações, tem a abertura da tag de script php no meio de um script, bem proximos a linha 51 que você reportou o problema.

    terça-feira, 11 de maio de 2010 às 17:19
  • Este post não possui Pingbacks/Trackbacks

Escreva um Comentário

Blog webARTz: Onde a WEB encontra a ARTE

2008~2010 Blog webARTz // Powered by Wordpress // Hospedado na KingHost // Desenvolvido por: Agência BBD
Fechar
Voltar ao Topo
Atenção !!
Nosso blog passou por grandes mudanças e melhorias na estrutura, recursos e conteúdo.

Estas alterações podem causar dificuldade na navegação, por este motivo alguns bugs e/ou problemas podem ocorrer. Caso isso ocorra pedimos que você nos notifique pelo "Fale Conosco" aqui do blog.

No momento estamos trabalhando para o perfeito funcionamento
do blog.

Obrigado !!
Fechar
Abrir Aviso