O uso de “register_globals” no mundo PHP↳PHP44 conteúdosPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019Docker de imagem. Para rodar projetos PHP em menos de 30 segundosDev (Back & Front) · jan 2026PHP 7.3: conheça as novidades desta versãoDev (Back & Front) · abr 2019Ver tudo em Dev (Back & Front) → é uma funcionalidade já
considerada obsoleta. As últimas versões dos aplicativos mais comuns de
código livre já não a utilizam mais.
Ao ativar esta configuração, além de trazer riscos ao seu site em
termos de segurança, você adia a necessidade de um ajuste. Nas futuras
versões do PHP, tal configuração não estará mais disponível, o que
significa que inevitavelmente mais cedo ou mais tarde terá que adaptar
o seu código fonte.
Existe uma alternativa transcrita abaixo para o uso de
register_globals que apresenta o mesmo resultado que habilitar a
configuração.
Um exemplo de uso comum do “register_globals” é para passar a
informação de qual pagina deverá ser visualizada em um determinado menu
ou botão. Isto é bastante comum principalmente em sites institucionais.
De modo mais técnico: Um site possui uma pagina principal
“index.php” que internamente verifica o conteúdo da variavel “$pagina”.
Esta variável recebe o nome da página a ser acessada. Quando acessarmos
http://dominio.com.br/index.php?pagina=contato, internamente a pagina
“index.php” chamará a pagina “contato.php”.
Supondo que o código original seja:
<?<br /><br /> if($pagina){<br /><br />include ($pagina.".php"); <strong> /* risco de seguranca !!!!!</strong> <strong> */</strong><br /><br />}else{<br /><br />include ("home.php");<br /><br />}<br /><br />?>Com uma alteração no código fonte é possível adicionar uma linha que
preencha o conteúdo da variavel “$pagina” com o parâmetro da url.
$pagina = $_REQUEST["pagina"];Ao incluir a linha acima imediatamente antes da primeira utilização
de “$pagina”, podemos agora trabalhar com o register_globals
desabilitado. Mas cuidado, ainda é necessário filtrar a variável para
que a sua aplicação somente receba valores esperados.
Para mais detalhes sobre como se proteger de injeção de código malicioso via passagem de parâmetro, veja este tutorial.
A proteção contra injeção no exemplo abaixo é meramente ilustrativo.
Existem técnicas muito mais avançadas e completas para se proteger no
link que passamos.
As alterações resultarão no seguinte:
<?<br />
$pagina = $_REQUEST["pagina"];<br /><br /><strong>/* use algum metodo de filtragem para evitar injeção de código */</strong><br /><strong> if($pagina ==</strong> <strong>"primeira" || $pagina == "segunda" || ...</strong><strong>){</strong><br />
include ($pagina.".php"); /* variável filtrada na entrada */<br />
}else{<br />
include ("home.php");<br />
}<br />
?>Nota:
Por padrão, o register_globals do PHP 5 vem desativado tanto em nossa
plataforma Linux↳Linux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps → como no Windows 2008, mas em último caso é possível
habilitá-lo no .htaccess (Linux) ou por pedido via solicitação na web
(Windows).





