eibon 2 Denunciar post Postado Dezembro 5, 2008 rvlira...eis: <?php function removeApostrofe($string){ $string = preg_replace("/(\'|\"|\-|\#|\*|\;|\=)/", "", $string); return $string; } $string = "' or '1=1;--"; $string = removeApostrofe($string); echo $string; //or 11 /*foreach($_POST as $key => &$valor){ $_POST[$key] = removeApostrofe($valor); }*/ ?> Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Renan 2 Denunciar post Postado Dezembro 5, 2008 uma dica fora a função pra anti-injection é fazer essa consulta dentro de uma stored procedure, e dentro dela.. fazer de uma forma pensando em se defender dos ataques... eu fiz uma aqui no mysql que é bem simples, mas é relativamente segura. Compartilhar este post Link para o post Compartilhar em outros sites
rvlira 0 Denunciar post Postado Dezembro 6, 2008 @hinom Bem, sim, eu estou querendo fazer a substituição com uma linha de código (preg_replace) em vez de várias (str_replace). Então, sim, eu estou complicando. ;) @Beraldo Mesma coisa. @Fabyo Pois é. Na verdade eu até estou vendo que eu escrevi que a barra invertida funciona apenas no MySQL, mas na verdade podem haver outros que adotaram um esquema diferente, não é? Como você mesmo disse no SQL Server é igual ao MySQL. No Firebird e Oracle o escape é com apóstrofe mesmo. @proust Muito obrigado. Problema resolvido. @Lucas Renan Nossa... Excelente idéia! Esqueci das storeds. Apenas gostaria de salientar que eu já tinha encontrado uma saída lá em cima na primeira função que o proust postou. Prossegui com o tópico porque, apesar de não entender de expressões regulares, sabia que era possível criar uma única expressão para o preg_replace. Estou desabilitando o banco de dados que usei na página de exemplo. Obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 6, 2008 Bem, sim, eu estou querendo fazer a substituição com uma linha de código (preg_replace) em vez de várias (str_replace). Então, sim, eu estou complicando não tem necessidade de escapar todos os comando sql.. apenas o single quote... enfim.. faça que for conveniente para o seu caso.. Compartilhar este post Link para o post Compartilhar em outros sites
Alex Camargo 0 Denunciar post Postado Julho 22, 2011 Bom dia pessoal! Vi que o amigo citou acima essa função: [/size][/font][font="arial, verdana, tahoma, sans-serif"][size="2"][color="#8D0000"][size="2"]<?phpfunction removeApostrofe($string){ $string = preg_replace("/(\'|\"|\-|\#|\*|\;|\=)/", "", $string); return $string;}$string = "' or '1=1;--";$string = removeApostrofe($string);echo $string; //or 11/*foreach($_POST as $key => &$valor){ $_POST[$key] = removeApostrofe($valor);}*/?>[/size][/color] [color=#8D0000] [/color] Uso um sistema de include para todas funções em meu sistema.. Gostaria de saber se tem alguma maneira de a função funcionar em todas consultas ao banco de dados sem a adição da linha: [/color][/size][/font][font="arial, verdana, tahoma, sans-serif"][size="2"][color="#8D0000"][size="2"]$string = removeApostrofe($string);[/size][/color] [/size][/font][font="arial, verdana, tahoma, sans-serif"][size="2"][color=#8D0000] Acho que não dá.. mas derrepente a galera sabe aí. Abração Compartilhar este post Link para o post Compartilhar em outros sites