Spyder.RV 0 Denunciar post Postado Agosto 2, 2011 Pessoal, estou com um problema bobo de escape de texto... Uso o xampp-lite no meu pc, e quando gravo dados com aspas no começo do texto, vai normal... mas quando subo pro meu host e faço a mesma operação o texto vem com as barras escapadas.. Estou usando a função mysql_real_escape_string para escapar os campos vindos via post <?php //... $meu_campo = mysql_real_escape_string($_POST['meu_campo']); //... /?> Texto digitado: "lorem ipsun dolor..." texto gravado no meu xampp-lite: "lorem ipsun dolor..." Texto gravado no meu servidor: \\\"lorem ipsun dolor...\\\" Acredito que é algum ajuste nas configs do php ou mysql... alguem tem uma dica? Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme_90 33 Denunciar post Postado Agosto 2, 2011 Cara, não sei se vou lhe ajudar muito mas, você já tentou usar outro tipo de função? Caso negativo, tente fazer a sua função para remover as aspas no início e final da string, quando for salvar os dados em seu servidor. Bom, é minha sugestão e é claro que tem outras formas muito mais simples de se fazer. Espero ter ajudado em algo. Compartilhar este post Link para o post Compartilhar em outros sites
Spyder.RV 0 Denunciar post Postado Agosto 2, 2011 Cara, não sei se vou lhe ajudar muito mas, você já tentou usar outro tipo de função? Caso negativo, tente fazer a sua função para remover as aspas no início e final da string, quando for salvar os dados em seu servidor. Bom, é minha sugestão e é claro que tem outras formas muito mais simples de se fazer. Espero ter ajudado em algo. Amigo, aí que tá... não só as aspas ou ' no inicio... qualquer parte do texto também ocorre... eo que é mais estranho é que é só no meu host... em outros hostings não dá isso. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Agosto 2, 2011 talvez magic_quotes esteja ativado no host.. se estiver ativado está muito mal configurado e principalmente desatualizado mas pode ser outros motivos também. Compartilhar este post Link para o post Compartilhar em outros sites
Spyder.RV 0 Denunciar post Postado Agosto 2, 2011 talvez magic_quotes esteja ativado no host.. se estiver ativado está muito mal configurado e principalmente desatualizado mas pode ser outros motivos também. Hum... vou verificar isso... valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Spyder.RV 0 Denunciar post Postado Agosto 2, 2011 Realmente... era isso mesmo... já pedi pra Kinghost ajustar... Agora me ficou uma dúvida: Qual o melhor meio de escapar o texto vindo de GET ou POST, independente de magic quotes? Melhor ainda, alguem tem uma indicação de boas opções de escape seguro, inclusive pra pra evitar SQL injection? Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme_90 33 Denunciar post Postado Agosto 2, 2011 Realmente... era isso mesmo... já pedi pra Kinghost ajustar... Agora me ficou uma dúvida: Qual o melhor meio de escapar o texto vindo de GET ou POST, independente de magic quotes? Melhor ainda, alguem tem uma indicação de boas opções de escape seguro, inclusive pra pra evitar SQL injection? Olha, eu fiz este método, mas falta testar. Não sei se está gambiarra, mas achei legalzinho! <? protected static function Injection($senha){ $senha = array("=","*","drop","insert","--","\'","\"","or","and","delete","describe","alter","table","distinct","where","like","cout()","(",")"); $senha = trim($senha); $senha = addslashes($senha); for($i = 0; $i <= sizeof($senha); $i++){ $senha = str_replace($senha[$i], "", $senha); } } ?> E para usar, pode fazer: protected static function Login($sql){ SuaClasse::Injection($_POST['senha']); } Enfim, não é um código muito bom, mas acho que já ajuda! Tenho certeza que virá programadores mais experientes e te passará algo muito mais descente que esse meu. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Spyder.RV 0 Denunciar post Postado Agosto 2, 2011 Realmente... era isso mesmo... já pedi pra Kinghost ajustar... Agora me ficou uma dúvida: Qual o melhor meio de escapar o texto vindo de GET ou POST, independente de magic quotes? Melhor ainda, alguem tem uma indicação de boas opções de escape seguro, inclusive pra pra evitar SQL injection? Olha, eu fiz este método, mas falta testar. Não sei se está gambiarra, mas achei legalzinho! <? protected static function Injection($senha){ $senha = array("=","*","drop","insert","--","\'","\"","or","and","delete","describe","alter","table","distinct","where","like","cout()","(",")"); $senha = trim($senha); $senha = addslashes($senha); for($i = 0; $i <= sizeof($senha); $i++){ $senha = str_replace($senha[$i], "", $senha); } } ?> E para usar, pode fazer: protected static function Login($sql){ SuaClasse::Injection($_POST['senha']); } Enfim, não é um código muito bom, mas acho que já ajuda! Tenho certeza que virá programadores mais experientes e te passará algo muito mais descente que esse meu. Abraço. Que isso cara... muito interessante a sua idéia... e pode ser usado em todos os campos, né? eu posso por exemplo dar um for each no POST e usar ela em todos os campos... foreach ($_POST as &$valor) { $valor = SuaClasse::Injection($valor); } Algo assim para que todos os campos estejam protegidos... Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme_90 33 Denunciar post Postado Agosto 2, 2011 Você teve outra idéia que eu não tinha pensado. Taí, excelente, agora é só usar, e eu vou pegar esse foreach e completar o método! hahaha Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Spyder.RV 0 Denunciar post Postado Agosto 2, 2011 Beleza... posta aí o final do método pra gente brincar e melhorar o bicho... Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme_90 33 Denunciar post Postado Agosto 2, 2011 public static function Injection($senha){ $senha = array("=","*","drop","insert","--","\'","\"","or","and","delete", "describe","alter","table","distinct","where","like","count()","(",")"); $senha = trim($senha); $senha = addslashes($senha); for($i = 0; $i <= sizeof($senha); $i++){ $senha = str_replace($senha[$i], "", $senha); } foreach($senha as $valor){ $valor = Functions::Injection($valor); } } Lembrando que não foi testado! kkkkkkkkk Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme_90 33 Denunciar post Postado Agosto 3, 2011 Melhorei o código. <? class Functions{ public static function Injection($senha){ $senha = array("=","*","drop","insert","--","\'","\"","or","and","delete", "describe","alter","table","distinct","where","like","count()","(",")"); $senha = trim($senha); $senha = addslashes($senha); foreach($senha as $valor){ $valor = str_replace($senha[$i], "", $senha); $valor = Functions::Injection($valor); } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Agosto 3, 2011 Desculpe a intromissão, mas vocês devem estar cientes de que a inibição de sintaxes SQL pode acarretar em corrompimento dos textos originalmente postados. O correto é somente evitar a injeção SQL e não remover palavras que façam parte de sua sintaxe. Vou evitar extender o assunto nesse tópico, porque muito já se discutiu e geralmente sempre aparece outros que postam sem ler e complicam ainda mais... Mas aconselho que estudem a sintaxe básica do SQL e do SGDB com o qual estejam trabalhando para que entendam o que é a injeção SQL. Quando entenderem perceberão o que estão fazendo. * SGDB (mysql, mssql server, oracle, firebird, sqlite, etc..) Compartilhar este post Link para o post Compartilhar em outros sites