Ir para conteúdo

Featured Replies

Postado

Olá pessoal, estou aqui para resolver um probleminha que tenho encontrado principalmente no meu curso, então estou criando esse tópico para facilitar um pouco a vida dessas pessoas que estão boiando na maionese. É o seguinte:

Para facilitar um pouco nosso trabalho, utilizamos GET para obter o valor de uma váriavel na url para que possa abrir uma determinada pagina sem atualiza o site por completo.

O pessoal do meu curso está utilizando o GET dessa forma:

 

Código HTML:
<?php
if(isset($_GET['pagina']) == ' '){ // Se ?pagina= nao for definido nao faça nada, caso tenha um valor procura no switch esse valor e executa-o.
}else{
   $pagina = $_GET['pagina'];
   switch($pagina){
      case 'home':
         include 'home.php';
      break;
      default: echo 'pagina nao encontrada';
   }
}
?>

Isso está errado ?
Não, isto não está errado, mas imagine o seguinte, você tem a pagina home,registro,download, e várias outras, ou seja, vc teria de adicionar uma por uma no switch() para que ele possa saber o que fazer com aquele valor.

Enfim, isso daria um problemão pra cabeça, então eu recomendo vocês fazerem o seguinte:

 

Código HTML:
if(!isset($_GET['pagina']) == ' '){ //Se ?pagina= for diferente de não definido
   $abrir = $_GET['pagina']; // Abrir obtém seu valor ou seja se for ?pagina=home, $abrir passa a valer home
   $local = $abrir.'.php'; // $local = home.php
   if(file_exists($local)){ // Se home.php existir
      include $local; // inclui home.php
   }else{ // se não
      echo 'pagina não encontra'; // pagina não encontrada
   }
}

É basicamente a mesma coisa a única diferença é que ao invés dele procurar no switch() ele vai verificar se o arquivo existe file_exists(), se existir vai abrir ele, se não, mostrar uma mensagem de pagina não encontrada !

abrçs!!!

 

I must not fear. Fear is the mind killer.

  • 3 weeks later...
Postado

Interessante esse código, mas mesmo assim ainda contém uma vulnerabilidade, porque ele checa se há o arquivo .php e assim carrega ele.

Já usei muito nos meus sistemas dessa forma que você fez, mas já tive problemas, a melhor solução que eu desenvolvi foi assim:

<?php
header("Content-Type: text/html; charset=UTF-8", true);

$pagina 	= $_GET['pagina'];
$extensao 	= '.php';
$items 		= array('index', 'teste', 'contato');

if( in_array($pagina, $items) && file_exists($pagina.$extensao) )
{
	// Ok, a gente inclui a página
	include_once $pagina.$extensao;
}
else
{
	// Erro, ou damos a mensagem ou incluimos uma página padrão
	exit('A página solicitada não existe!');
}
?>

Dessa forma ele checa se o item passado pelo GET está dentro do vetor predefinido por você e ainda assim checa se há o arquivo, dessa maneira, evitamos que o "hacker" force o sistema a incluir arquivos do servidor.

rxtoGjF.jpg 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo