Função Anti MySQL Injection - Proteja sua aplicação!

Publicado por Perfil removido 14/03/2009

[ Hits: 25.953 ]

Download anti_injection.php




Função que evita ataques do tipo MySQL Injection.

O uso de uma função deste tipo hoje em dia é obrigatório para se obter o mínimo de segurança. Deve ser utilizada em todas as variáveis que contiverem dados informados pelos usuários!

Para incluir no seu script, utilize a seguinte linha:

include_onde('anti_injection.php');

Exemplo de uso:

$nome = anti_injection($_POST['nome']);

Então a variável $nome estará segura para utilizar em consultas SQL.

  



Esconder código-fonte

<?php

# Função Anti MySQL Injection - Proteja suas aplicações!
# Por Alexandro G. Correa - Porto Alegre - RS
# alex.linux (at) gmail.com
# 13/03/2009

function anti_injection($sql){
   $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "" ,$sql);
   $sql = trim($sql);
   $sql = strip_tags($sql);
   $sql = (get_magic_quotes_gpc()) ? $sql : addslashes($sql);
   return $sql;
}

?>

Scripts recomendados

Página protegida v2004.1

GMail Bomber

Cadastro utilizando a classe PDO com o método prepare()

Login em PHP 2

Usuário Samba + LDAP alterando sua senha pelo browser


  

Comentários
[1] Comentário enviado por removido em 14/03/2009 - 14:00h

Amigos, apenas uma correção. O correto para incluir o script em seu site é:

include_once('anti_injection.php');

Um abraço!
Alex.

[2] Comentário enviado por Gabriel_Silva em 14/03/2009 - 14:52h

Não seria mais simples... ?

http://php.net/en/mysql_real_escape_string

[3] Comentário enviado por removido em 14/03/2009 - 17:15h

Se analisar o código, a mysql_real_escape_string é menos completa. O que posso garantir é que o script que publiquei sempre resolveu os problemas e nunca houve nenhum ataque de MySQL Injection bem-sucedido.

[4] Comentário enviado por pedroarthur.jedi em 16/03/2009 - 12:29h

Boa... Mas se o texto for em inglês? Ou se o sujeito quiser mandar o outro digitar a tecla 'insert' do teclado?

[5] Comentário enviado por removido em 16/03/2009 - 14:47h

Pedro, esta função pode ser utilizada em qualquer idioma... a linguagem SQL tem um padrão internacional. Sobre digitar "insert", não entendi mesmo...

[6] Comentário enviado por ferlopes em 17/06/2016 - 11:47h

Muitos anos depois, mas vem ao caso:

Sobre digitar insert: se uma pessoa escrever qualquer palavra "delete", ou "insert" no meio de um texto, por exemplo, um texto técnico, ele simplesmente vai substituir por ''...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts