1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

include no minimo estranho

Discussão em 'Web Development' iniciada por rpnetwork, 13 de Janeiro de 2009. (Respostas: 5; Visualizações: 659)

  1. rpnetwork

    rpnetwork Power Member

    Boas, estou com um problema que parece que se resolve muito bem, mas não estou a conseguir resolver.
    PHP:
    $page "'pages/" $pag ".php'";
        
    //echo $page;
        
    include($page);
    basicamente o $pag vai buscar o valor a um $_get[], até ai tudo bem, o problema começa quando eu quero fazer o include e ele dá.me erro:


    ...e o estranho é que se eu fizer com o echo para a página, copiar e substituir pelo $page ele já faz o pedido (só para a página em questão)!

     
  2. brazuca

    brazuca Power Member

    tente

    include $page;

    obs: você sabe/conhece a falha de segurança que você está gerando fazendo isso?
     
  3. PrOdG

    PrOdG Power Member

    O problema está nas plicas em $pages e .php.

    E, como diz o brazuca, estás a abrir um buraco gigantesco na tua aplicação. NUNCA se faz include de variáveis não tratadas.
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Como disseram acima, isso provoca uma falha de segurança enorme. E se $page = "../settings"? Ele faz include de "pages/../settings.php". Quem diz "settings" diz outro ficheiro qualquer.

    É fácil dares evitares isso:
    PHP:
    if(!is_numeric($pag)) die("Erro.");
    $page "pages/" $pag ".php";
        
    //echo $page;
        
    include($page); 
    Em princípio deve chegar, e este código deve funcionar.
     
  5. PrOdG

    PrOdG Power Member

    E portanto a solução é só permitir páginas do tipo 1.php, 10.php, 1209743.php ?
    Que tal
    PHP:
    if (!preg_match('/^\w+$/'$pag)) die('Buraco tapado.');
    ...
    ?
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    É o normal, quando alguém mete a página no url :P
    Se ele quer aceitar caracteres alfanuméricos, então isso serve, mas se ele apenas vai usar números, é preferível verificar com o is_numeric() do que usar regexps. Apenas depende daquilo que ele está a pensar usar.

    edit - eish, esquece, troquei-me todo. Tens toda a razão.
    Pensei em páginas do tipo "página 1 de 10", e não em páginas do tipo Home, Quem somos, Contactos..., daí aquela proposta.
     
    Última edição: 14 de Janeiro de 2009

Partilhar esta Página