Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Função Anti SQL Injection + extract ou foreach php

27-05-2012 11:27

Bom, tenho um formulário que contem 32 campos, normalmente teria que configurar o recebimento de valor para cada campo e ainda adicionar a função anti_injection para cada campo,
$cpf_cnpj = anti_injection($_POST["cpf"])

isso deixava o codigo bem grande, ai procurei uma solução para extrair todos os campos, encontrei com o foreach e extract, porem só que com o foreach sendo usado dessa maneira:
foreach($_POST as $campo => $valor){ $campo = anti_injection($valor); }

Retorna o valor das variáveis todas em branco, e usando o :
extract($_POST, EXTR_PREFIX_ALL, 'ex');

Funciona, só que não achei meios para incluir o uso da função anti_injection


Função anti_injection para quem quiser:
<? function anti_injection($texto){ // Lista de palavras para procurar $check[1] = chr(34); // símbolo " $check[2] = chr(39); // símbolo ' $check[3] = chr(92); // símbolo / $check[4] = chr(96); // símbolo ` $check[5] = "drop table"; $check[6] = "update"; $check[7] = "alter table"; $check[8] = "drop database"; $check[9] = "drop"; $check[10] = "select"; $check[11] = "delete"; $check[12] = "insert"; $check[13] = "alter"; $check[14] = "destroy"; $check[15] = "table"; $check[16] = "database"; $check[17] = "union"; $check[18] = "TABLE_NAME"; $check[19] = "1=1"; $check[20] = 'or 1'; $check[21] = 'exec'; $check[22] = 'INFORMATION_SCHEMA'; $check[23] = 'like'; $check[24] = 'COLUMNS'; $check[25] = 'into'; $check[26] = 'VALUES'; // Cria se as variáveis $y e $x para controle no WHILE que fará a busca e substituição $y = 1; $x = sizeof($check); // Faz-se o WHILE, procurando alguma das palavras especificadas acima, caso encontre alguma delas, este script substituirá por um espaço em branco " ". while($y <= $x){ $target = strpos($texto,$check[$y]); if($target !== false){ $texto = str_replace($check[$y], "", $texto); } $y++; } // Retorna a variável limpa sem perigos de SQL Injection return $texto; } ?>

0
www.radiokiller.com.br
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Função Anti SQL Injection + extract ou foreach php

27-05-2012 11:48

A forma que encontrei mais curta seria usar o
extract($_GET, EXTR_PREFIX_ALL, 'ex');

E passar a função no echo na hora de imprimir a variável

echo anti_injection($ex_valor);
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Função Anti SQL Injection + extract ou foreach php

27-05-2012 11:51

Sim, mais eu de qualquer forma teria que por em cada variável a função anti_injection, ai o código ia voltar a ficar grande, eu queria mesmo era um jeito que extraísse todos os campos já filtrados pela anti_injection
0
www.radiokiller.com.br
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Função Anti SQL Injection + extract ou foreach php

27-05-2012 11:56

Eu tinha tentando uma forma aqui e tinha dado erro.

Essa linha da função

$target = @strpos($texto,$check[$y]);

Note que adicionei o arroba porque estava dando erro usando o extract assim

extract(anti_injection($_GET));

echo $valor;

Dessa forma funcionou aqui. Mas tirando o arroba está dando erro no strpos
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Função Anti SQL Injection + extract ou foreach php

27-05-2012 12:58

Bom, acabei por usar assim:
anti_injection($ex_valor);

Ao menos diminuiu um pouco o código e as variáveis ficaram com um prefixo pra assegurar que ninguém vai ter acesso ao nome das variáveis com base no atributo mane dos inputs
Mais caso alguém tenha um método mais eficiente sinta-se a vontade para compartilhar. ;) e mais uma vez muito obrigado caro web !
0
www.radiokiller.com.br
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Função Anti SQL Injection + extract ou foreach php

27-05-2012 12:59

Boa.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 141
Sexo: Masculino

Função Anti SQL Injection + extract ou foreach php

28-05-2012 08:46

Boas, porque voce nao coloca as querys tudas num fecheiros e coloca so ai o codigo para as querys as funcao injection???


se voce individualizar o codigo e depois colocar include para chamar sua o fecheiro seria muito mais facil

;)
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Função Anti SQL Injection + extract ou foreach php

29-05-2012 16:45

Caro big_TSunami, essa sua dica também seria ótima, não deixa de ser uma boa alternativa, obrigado por responder.
Veja este post que fiz, é bem interessante: Validacao-de-Email-Jquery-e-PHP-Mysql_3_7160.html
0
www.radiokiller.com.br

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado