Ir para conteúdo

POWERED BY:

Arquivado

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

Doug_S.S.S.

Segurança nas variaveis

Recommended Posts

Pessoal,

 

estou com um probleminha aqui...

 

no meu site estou usando um include dentro do index para abrir os links que eu precisso.

 

a sintaxe é essa:

 

<?php if(isset($page)) { include ("$page");} else{ include ("main.php"); } ?>

então o primeiro valor da variavel $page eh o arquivo main.php, então quando clico em algum link ele abre e o endereço na URL fica dessa maneira:

 

index.php?page=link.php

 

soh que se eu ir na url e atribuir qualquer coisa a variavel $page abre normalmente dentro do include! Por exemplo:

 

index.php?page=http://www.terra.com.br

 

 

Assim deixando vulneravel para executarem qualquer script malicioso dentro da minha pagina. :mellow:

 

 

como eu faço pra resolver este problema de segurança?

 

 

Grato.

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo com file_exists() ainda seria perigoso... pq o cara poderia fazer: index.php?page=/etc/passwdA forma mais segura seria:<? $pages = array('index.html', 'page2.html', 'page3.html'); if (in_array($page, $pages)) include($page); else die("Boa tentativa :P ")?> ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito....Fiz da seguinte forma:<?$pages = array('index.php', 'main.php', 'noticias.php', 'mais_noticias.php'); if (in_array($page, $pages))include($page); elsedie("Boa tentativa")?>aquelas são as paginas que devem ser liberadas...mas... já cai no DIE direto quando carrega o index.phpe mais uma coisa.... como que vou atribuir o primeiro valor pra variavel $page?Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o cara porque que voce nao faz so criptografia no parametro da url?utiliza base64 ou entao urlencode....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jason,criptografar a url não vai resolver meu problema...eu tenho que bloqueiar o acesso de outras paginas que não sejam as minhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oxe... simples<?if (isset($_GET['page'])) { $pages = array('index.php', 'main.php', 'noticias.php', 'mais_noticias.php'); if (in_array($_GET['page'], $pages)) include($_GET['page']); else die("Boa tentativa")}else include("index.php");?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim nao fica nada pratico, ta um sistema estatico, se precisar permitir mais alguma pasta ou arquivo tem que ficar editando o codigo, o certo é fazer isso via codigo e banco de dados, mas se você vai ter só essas paginas e nunca mais vai mecher beleza

 

e da pra fazer um modo seguro, e sem precisar usar get

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade... toda segurança tem seu preço... existe inúmeras formas de se fazer.... mas todas elas com certeza exigirá mais 'trabalho' do que um simples include puro como ele estava fazendo. É o preço que se paga pela segurança/consistência/confiabilidade... etc... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fabfernandes,

 

coloquei o codigo lah... mas agora a pagina naum carrega mais...

 

soh carrega o title e o background e mais nada... será algum problema do servidor?

 

Esta é a pagina!

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brigadaum galera.. deu certo...o problema ali eh que tava tentando incluir o index.php mais na verdade é outro arquivo que deveria ser incluso...Muito obrigado...desculpa ae minha ignorancia...Vlws

Compartilhar este post


Link para o post
Compartilhar em outros sites

sei la...meu jeito pode parecer mais extenso, mas acho q ele da uma mobilidade maior pra fazer mais coisas, inclusive definir variaveis qndo for um include especifico ou até colocar 2 includes numa pagina...

 

switch ($name) {case "Empresa":include ('includes/empresa.php');break;case "Notícias":if(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) {include ('includes/news_ie.php');} else {include ('includes/news_fire.php');}break;case "Enviar":include ('includes/temp.php');break;case "Imprimir":include ('includes/temp.php');break;case "Produtos":include ('includes/produtos.php');break;case "Clientes":include ('includes/clientes.php');break;case "Downloads":include ('includes/downloads.php');break;case "Links":include ('includes/links.php');break;case "Contatos":include ('includes/contato.php');break;default:include ('includes/inicial.php');break;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poseh, galera... Voltando ao assunto...A sugestão do fabfernandes deu certinhu... soh que como o fabyo falo naum fico nada pratico... pq agora eu tive que inclui mais um monte de arquivos e dai eh um saco, coloca um por um ali...Será que naum tem algum jeito de resolver isso, mas sem usar BD??GRATO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi o que eu faleitesta se a pagina existe com file_exists() dai se existir você incluedai nao precisa mais editar sua pagina para incluir uma pagina nova

Ok Fabyo funcionou...fico assim:
<?$page = $_GET['page'];	 	 if(!file_exists("{$page}")){		  $page = "main.php";	 }	 include_once("{$page}");?>
Vlwss.... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.