Ir para conteúdo

POWERED BY:

Arquivado

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

jnejunior

[Resolvido] função anti injection

Recommended Posts

ola galera...

 

gostaria de saber se esta função é boa e queria saber se na linha 7 ele vai tirar as barras caso o get_magic_quotes_gpc() esteja ativo, é isso mesmo?

 

<?php
function antiInjection($str) {
 // se a variável $str não for número
 if (!is_numeric($str)) {
   // limpa espaços vazios no começo e no fim da string
   $str = trim($str);
   $str = get_magic_quotes_gpc() ? stripslashes($str) : $str;
   $str = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($str) : mysql_escape_string($str);
 }
 return $str;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função é eficiente sim contra ataques de SQL Injection, inclusive é semelhante a uma função que eu publiquei em um artigo meu sobre o assunto.

 

E você está certo quanto a linha 7, irá remover as barras invertidas caso a diretiva magic_quotes_gps esteja ativa, pois ela adiciona barras inveritdas automaticamente.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função é eficiente sim contra ataques de SQL Injection, inclusive é semelhante a uma função que eu publiquei em um artigo meu sobre o assunto.

 

E você está certo quanto a linha 7, irá remover as barras invertidas caso a diretiva magic_quotes_gps esteja ativa, pois ela adiciona barras inveritdas automaticamente.

 

Um abraço!

 

No PHP 6 o magic_quotes_gps será removido, recomendo o uso do mysql_real_escape_string()

http://www.php.net/manual/pt_BR/function.mysql-real-escape-string.php

Compartilhar este post


Link para o post
Compartilhar em outros sites
No PHP 6 o magic_quotes_gps será removido, recomendo o uso do mysql_real_escape_string()

http://www.php.net/manual/pt_BR/function.mysql-real-escape-string.php

por compatibilidade entre bancos, eu ainda prefiro addslashes()

afinal se eu usar mysqli, pdo, ou outro banco que não seja MySQL, nao terei mysql_real_escape_.. disponivel.

 

Não lembro bem de onde, mas acho q li sobre mysql_ ser descontinuado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Lucas,

 

A função não utiliza magic_quotes_gps e sim mysql_real_escape_string.

 

Ela apenas verifica se a diretiva magic_quotes_gps está ativa, se estiver faz a remoção das barras invertidas inseridas por ela.

 

 

@William,

 

Esta função serve apenas para sistemas que utilizam as funções mysql_*.

 

No caso do PDO e mysqli basta usar as funções "prepare" antes de executar a query, assim já irá prevenir contra SQL Injection.

 

Exemplo com PDO:

 

$sth = $pdo->prepare( 'SELECT * FROM usuarios WHERE usuario = ?' );
$sth->execute( array( $_GET['usuario'] ) );

 

Neste caso não é necessário usar a função addslashes. :)

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.