como evitar sql injection,como previnir contra sqlinjection,como bloquiar sqlinjection no site,dificultar sql injection

Publicado: outubro 9, 2009 em bugs, normal, segurança da informaçao, seguranca
Tags:, , , , ,

Clique aqui e veja nosso novo site

Nos Ultimos tempos, o tipo de ataque mais comum entre hackers malvados, é a terrível sql injection. Em Que o hacker injeta um código malicioso no site,sistema(…), e consegui explorar o site, e conseguir diversas informações no site.

Os administradores de sites hoje em dia não estão si preocupando tanto quanto deveriam com a questão de segurança.  Alguns, não é porque não si preocupam e sim porque não dão conta de si proteger contra estes ataques.

Então este que é o meu propósito hoje. É ensinar as pessoas si precaverem do pior, que pode acontecer.

Esse código é muito simples para quem conhece alguma coisa de php.

Código php:

<?php

//si cod que vou pegar via post nao for numero, entao manda para uma pagina de error; caso o link der erro entao da em exit na pagina

if(!is_numeric($_POST[‘cod’]){

header(“location:error.php”);

exit;

}else{//caso contrario o codigo for numero entao pega o cod via post

$cod    =$_POST[‘cod’];

}

if((isset($_POST[‘nome’]) && ($_POST[‘nome’]==””)){//si existe um post chamado nome e neste post nao estiver nada nele, entao da erro

header(“location:error.php”);

exit;

}

//Aqui vamos comecar a segurança do site, nao podera entrar nenhum caracter especial via post, assim bloquiará os ataques de sqlinjection

//a funcao str_replace, é para substituir caracteres de alguma coisa

$nome  =$_POST[‘nome’];

$nome  =str_replace(“‘”,””, $nome);

$nome  =str_replace(“+”,””,$nome);

$nome  =str_replace(“@”,””,$nome);

$nome  =str_replace(“(“,””,$nome);

$nome  =str_replace(“)”,””,$nome);

$nome  =str_replace(“&”,””,$nome);

$nome  =str_replace(“=”,””,$nome);

$nome  =str_replace(“!”,””,$nome);

$nome  =str_replace(“#”,””,$nome);

$nome  =str_replace(“%”,””,$nome);

$nome  =str_replace(“*”,””,$nome);

$nome  =str_replace(“.”,””,$nome);

$nome  =str_replace(“,”,””,$nome);

//Aqui podemos selecionar o banco de forma nomal, sem precisar de medo desta query

mysql_select_db($database_local, $local);

$query_rr = sprintf(“SELECT cod, nome, descricao, codigo FROM postss WHERE cod=’$cod’ and where nome=’$nome'”);

//acima eu selecionei cod,nome,descricao e o codigo da tabela postss em que o cod seja igual ao que nos pegamos via post, e o nome seja //igual ao que nos pegamos via post

$rr = mysql_query($query_rr, $local) or die(mysql_error());

$row_rr = mysql_fetch_assoc($rr);

?>

Conclusão

Esse código foi para mostrar para os administradores de sites que dependendo do assunto, é “fácil si proteger”(Entre aspas, é claro).

Obs.: SI alguém não entender nada deste código, faça as perguntas aqui.

~bye~ Juancarloscunha

comentários
  1. cleytom disse:

    Bom amigo , gostei do seu blogger, tem muita coisa legal, algumas coisas ja obsoletas porem legal. So que não gostei de falar hackers, neste post. Quem invade usando php injection e coisa de script kiddies – defacer e não hacker.

    Mais o teu blogger ta massa continue assim, esta ajudando muitos novatos .
    Abraços

    • Ja eu acho o contrario. quando voce quer invadir alguma coisa, voce usa de qualquer artimanha que tiver e puder. si nao estiver nenhuma porta aberta somente o erro de sql, o hacker entao nao invadi?
      eu nao concordo!
      mas, cada um tem sua opniao

  2. Anderson disse:

    Olá , amigos sou meio leigo em php e estou com um problema de Injection no PHP onde vc colocar ‘or’ 1 no lugar do login e senha a pessoa tem acesso total a tudo …. se vc poder me ajudar com esse script eu fico muito agradecido … Obrigado

    <?php
    if ($acao == "validar_acesso"){
    $sql="select * from usuario where (login='$edt_login') and (senha='$edt_senha')";
    $exe=mysql_query($sql);
    $num=mysql_num_rows($exe);
    if ($num <=0){
    echo "window.alert(‘ERRO. Acesso nao permitido’);”;
    echo “window.location=’index.php’;”;
    } else {
    $tmp=mysql_fetch_array($exe);
    $usuario_situacao=$tmp[situacao];
    if ($usuario_situacao == 0){
    echo “window.alert(‘ERRO. Login Inativo. Favor contactar o Administrador’);”;
    echo “window.location=’index.php’;”;
    }
    if ($usuario_situacao == 9){
    echo “window.alert(‘ATENCAO. Login Bloqueado. Favor contactar o Administrador’);”;
    echo “window.location=’index.php’;”;
    }
    if ($usuario_situacao == 1){
    $_SESSION[‘acesso_idusuario’]=$tmp[idusuario];
    $_SESSION[‘acesso_idempresa’]=$tmp[idempresa];

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s