Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wesley Balestrini

Tudo que eu(nós) preciso para evitar mysql injection!

Recommended Posts

Olá pessoal, estou estudando sobre injection, na internet, mas não achei um conteúdo mais "solido", onde eu pudesse ir dormir um pouco mais tranquilo sabendo que minhas tabelas estão seguras! Então, recorro á vocês, tenho certeza que muitos tem experiências aqui para passar :hug:

Bem, achei o seguinte código aqui no fórum:

 

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"]);
?>

 

http://forum.imasters.com.br/topic/125349-anti-sql-injection/?hl=sql

 

Minha primeira duvida é: Na quarta linha, ele especifica alguns comando que não poderão ser passado pelo usuário. Mas se o campo for text, um fórum por exemplo, e ele quiser escrever em inglês? Como que faz?

 

Quem tiver outras dica, podem colocar pessoal...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use PDO. Essa função é uma gambiarra, muito fácil de ser burlada por sinal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal o PDO e o Prepared Statements.

 

Digamos que eu vá usar isso, e tenho um campo texto, o usuário poderá escrever qual quer coisa? Tipo nomes em ingles, que tambem são comandos SQL? INSERT,DELETE,SELECT ETC...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele sabe quando é um comando de query ou um dado do usuário. O usuário pode escrever qualquer coisa, mas será interpretada como um dado qualquer e não um comando.

 

Remover as palavras é uma terrível solução, imagine que o cara usa uma senha chamada "UPDATE", ele ficaria automaticamente sem senha e já era a segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele sabe quando é um comando de query ou um dado do usuário. O usuário pode escrever qualquer coisa, mas será interpretada como um dado qualquer e não um comando.

 

Remover as palavras é uma terrível solução, imagine que o cara usa uma senha chamada "UPDATE", ele ficaria automaticamente sem senha e já era a segurança.

 

Á legal! Irei imediatamente implementar isso aos meus projetos! Posso demorar um pouco, pois não sei muito sobre orientação a objeto, mas aprendo!

 

Muito obrigado pessoal!

 

PS.: Vou deixar o tópico aberto mais um pouco, caso alguém queira opinar sobre!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionando...

 

Injeção de SQL não é o único tipo de injeção. Um usuário malicioso pode aproveitar vulnerabilidades em uma aplicação e injetar código HTML ou JavaScript que será espelhado para todos os visitantes de determinada página e processado por seus navegadores.

 

Veja os vários tipos de ataques injection e soluções no OWASP

 

Uma dica para evitar diversos tipos de ataque é filtrar e validar tudo que vier do cliente, isso é diferente de tentar prever código malicioso (blacklist), que sim aprovar apenas a informação se estiver for tipo correto e estiver no formato correto (whitelist).

 

filter_input

Expressões Regulares

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas a questão do tópico seria SQL injection.

 

E um adendo ao autor: não existe só MySQL injection, SQL injection pode ser em qualquer banco de dados SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem pessoal, acontece que se tratando de php, achei que só havia riscos no MySQL, ou outro banco dedados usado para php. Agora vejo que á mais perigos! Java script, eu até imagino umas possibilidades, mas html eu não imagino o que pode ser feito!

 

Quem conhecer mais possíveis falhas na segurança, ao se programar para web, coloquem aqui, por favor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.