fsphp 0 Denunciar post Postado Maio 3, 2006 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
Fabyo 66 Denunciar post Postado Maio 3, 2006 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
fsphp 0 Denunciar post Postado Maio 3, 2006 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
Felipe_ls 0 Denunciar post Postado Maio 3, 2006 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
Fabyo 66 Denunciar post Postado Maio 3, 2006 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
luis-restart 0 Denunciar post Postado Maio 3, 2006 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
fsphp 0 Denunciar post Postado Maio 3, 2006 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 66 Denunciar post Postado Maio 4, 2006 e ai luis beleza? = ) quanto tempo, ve se nao some Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Maio 4, 2006 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
Fabyo 66 Denunciar post Postado Maio 4, 2006 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
fsphp 0 Denunciar post Postado Maio 4, 2006 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
Fabyo 66 Denunciar post Postado Maio 4, 2006 basicamente sim mas se você quiser se proteger mais você poder usar funções do mysqli para passar os dados do sql por parametros dai nao tem mais perigo Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Maio 4, 2006 Mas nesse caso, o mysqli só roda no php5, né? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Maio 5, 2006 isso mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Maio 5, 2006 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
fsphp 0 Denunciar post Postado Maio 5, 2006 Douglas, Como seria essa verificação? Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Maio 5, 2006 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
fsphp 0 Denunciar post Postado Maio 5, 2006 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
Fabyo 66 Denunciar post Postado Maio 5, 2006 Fernando use addslashes() ja ajuda bastante Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Julho 12, 2007 A simples limitação de caracteres nos campos previne o anti-injection ? Compartilhar este post Link para o post Compartilhar em outros sites