Ir para conteúdo

POWERED BY:

Arquivado

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

fsphp

Função anti injection

Recommended Posts

Oi pessoal,Estou usando uma função anti injection para tratar os valores enviados através de um formulário mas fiquei com uma dúvida.O programa que estou fazendo insere o TÍTULO de um artigo, o AUTOR, e o TEXTO propriamente dito. Como faço para tratar os valores enviados para o campo texto onde, na minha anti_injection eu substituo "delete"por "", "create" por "" etc?Se no texto, o autor utillizou essas palavras e eu substituí-las por campos vazios vai acabar distorcendo o texto dele.O mesmo pode ocorrer no caso de forms de comentários. COmo tratar os valores do comentário quando estes contiverem, por exemplo, as palavras: delete, update etc?

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa, entao olha la meu exemplo de anti sql injection, eu expliquei la

que basta eliminar ou formatar os caracteres que o sql entende como caracteres especiais da programação interna do sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Fabyo.Li todo o tópico Anti SQL Injection...Resumindo o que entendi, não precisa filtrar as palavras (select, delete etc), somente as aspas e os caracteres de comentários, certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eliminando os caracteres de comentarios ja fica bem dificil de alguem fazer inject, pra nao dizer impossivel. Mas voce sabe, nada é impossivel na informatica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, veja bem nao precisa eliminar, imagina se você tivesse que criar um editor de textos dai a pessoa precisa digitar ; # . // etc...

o que você tem que fazer é converter esses formatos para caracteres html

invalidando sua função, porque você nao pode mecher no que o usuario escreve, imagina aqui no forum tivesse uma função para apagar esses caracteres como a gente iria escrevela ?

 

entendeu ?

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala fsphp, Fabyo, tudo bem com voces garotos??

 

pra quem possa interessar, tem uma materia na ezine dos caras motd que explica um pouco de SQL Injection e que cita a funcao criada pelo Fabyo (ta famoso hein rapaz heheh)

a url pra ler online eh: http://guide.motdlabs.org/edicoes/guide04/SQL_Injection.txt

e para puxar todas as materias da ezine: http://guide.motdlabs.org/edicoes/guide04/motd_guide_04.zip

 

[]s

luis-restart

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala aí Luis, tudo beleza?Valeu o link, vou ler a matéria, parece bem interesante.Vi o pessoal comentando a função do Fabyo, ele está ficando famoso mesmo. Acho que vou criar uma comunidade no Orkut "Eu conheço o Fabyo", o que acha? kkkkk Pra variar ele continua "rebentando"!Vou ler e depois posto algo aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo,Então, nesse caso, basta usar a htmlentities(). Não precisa da str_replace() ou preg_match() buscado palavras como delete, drop, insert etc. uma vez que retirando as aspas simples e duplas e os caracteres especiais já resolve o problema de injection. Está certo isso? :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, veja bem para pesquisa você precisa pesquisar um caracter com precisao dai você nao pode converter tudo que você recebe, agora para cadastrar no banco ai sim você converte tudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bastaria fazer a verificação assim para evitar sql injection?<?function anti_injection($string){$string = htmlentities($string);return $sql;}foreach($_POST as $campo => $valor){$$campo = anti_injection($valor);}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também é interessante sempre definir o tipo de valor (inteiro, string, boleano..) que você está passando para o php, ajuda bastante em questão de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta informar o tipo entre parenteses.

 

$variavel = (int)$_POST['numero'];

Você também pode usar as funções; gettype() (retorna o tipo) e settype() (seta um tipo);

 

Para verificar os tipos você também pode usar algumas funções como is_int(), is_interger, is_string, is_array...etc, e depois tratar;

 

O Mysqli, também possuiu a função mysqli_stmt_bind_param(), que você informa o tipo de dado que vai ser passado para o sql.

 

 

São inúmeras funções para você usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso da verificação do tipo deve ser bem útil com os campos numéricos. Muito boa a dica. $variavel = (int)$_POST['numero'];Mas no caso de um injection, este será uma string, que se for injetado num campo nome, email, senha, que utilizam strings não funciona.Não é o caso das funções do mysqli que não conheço, mas que num server rodando php4 não funcionará, restando o esquema com a htmlentities().

Compartilhar este post


Link para o post
Compartilhar em outros sites

A simples limitação de caracteres nos campos previne o anti-injection ?

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.