Ir para conteúdo
Fórum Script Brasil
  • 0

Blacklist SQL


Wilson Tamarozzi Jr.

Pergunta

ola pra todos,

Seguinte eu estou tentando me blinda contra possiveis mau intencionados que querem passar SQL nos meu parametros,

Gostaria de fazer uma blacklist dos comandos que não vou deixar o cara usar, mas estou com 1 problema, não consigo definir uma array para poder ler de outro arquivo... EXEMPLO

tenho 2 arquivos

1 = conf.php

2 = funcao.php

no meu conf.php tem isso.

define('minha_array', array('insert', 'delet', 'update','select');
ai eu tenho uma função que recebe um parametro da index para saber o tipo de pesquisa ... EXEMPLO no meu funcao.php tem isso.
public function seleciona_todos($operacao)
{
   //verifica se o parametro que o cara passo não esta na blacklist se estiver (true) então retorna false e cancela a ação.
   if(array_search($operacao, minha_array) === true)
   {
      return false;
   }
   else
   {
      //faz o que é para fazer
   }
}

Quem tiver uma ideia de como fazer, eu vou agradeçer muito :D

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Velho,

1º - O PHP não permite assinar um array para uma constante, constantes só aceitam variáveis do tipo scalar: integer, string, boolean e float

define('minha_array', array('insert', 'delet', 'update','select');
Uma opção é adcionar esse array a sessão;
$_SESSIONI['minha_array'] = array('insert', 'delet', 'update','select');
Então sua condição irá verifica o array que está registrado na sessão
if(in_array($operacao, $_SESSION['minha_array']) === true)

Link para o comentário
Compartilhar em outros sites

  • 0

Comigo não deu certo, mas já arrumei uma solução, demorei mas consegui pensar em algo, fiz o seguinte

Fui direto na fonte dos meu parametro que é a minha URL amigavel onde Key recebe a URL com parametros

$key = isset($_GET['key']) ? $_GET['key'] : 'index';

$separado = explode('/', $key);

$sql_blacklist = array('INSERT','UPDATE','DELETE','\'','>','<','=','OR');

if ($i = 0; $ i < 3; $i++)
{
   if (in_array($separador[$i] , $sql_blacklist) === true)
   {
      echo 'corno para de tentar me sacanear';
   }
}
else
{
   echo 'ele foi um bom garoto, vou mostrar o que ele quer.';
}

No caso só recemo no maximo 3 parametro então o while tem valor maximo de 3

Editado por Wilson Tamarozzi Jr.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...