Ir para conteúdo

POWERED BY:

Arquivado

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

Spyder.RV

Problema com texto escapado

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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