Ir para conteúdo

Arquivado

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

Claudiobrother

Método "escape" para previnir ijeção SQL

Recommended Posts

Gostaria de saber a opnião de vocês sobre a função abaixo

public function escape($values)
{
   if (is_array($values)):
       foreach($values as $chave => $valor)
       {
           $values[$chave] = $this->escape($valor);
}
       return $values;
   endif;

   $values = get_magic_quotes_gpc() ? stripslashes($values) : $values;

   if (function_exists('mysql_real_escape_string') AND is_resource($this->conexao)):
       $values = mysql_real_escape_string($values, $this->conexao);
   elseif (function_exists('mysql_escape_string')):
       $values = mysql_escape_string($values);
   else:
       $values = addslashes($values);
   endif;

   $values = ($values != "") ? "'" . $values . "'" : "null";

   return $values;
}

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma falha no seu codigo.

 

No foreach, se o $values for um array tambem, ele nao vai passar pelo filtro.

 

No mais, parece tudo certo.

 

Mas...

 

É Bobagem. Porque voce nao usa o PDO, uma biblioteca nativa do PHP que previne todo e qualquer tipo de inject?

Além de voce poder alterar o banco de dados em uma string.

 

Da uma olhada ai:

 

http://php.net/pdo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela resposta!

 

Realmente PDO é muito bacana (bem melhor que o módulo do PEAR).

Ainda estou usando meus scripts até me adaptar com algum framework.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma falha no seu codigo.

 

No foreach, se o $values for um array tambem, ele nao vai passar pelo filtro.

 

Na verdade ele está chamando a função recursivamente dentro do foreach. Então, se $values for um array, a função escape será chamada novamente e vai testar. Se o que for passado for um array, chama a função para valor do array. Se dentro deste array o valor ainda for um array, vai acontecer da mesma forma.

 

Carlos Eduardo

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.