Alerta para uso de variáveis globais no PHP

Publicado por Lucas Stephanou em 23/12/2004

[ Hits: 10.983 ]

 


Alerta para uso de variáveis globais no PHP



Estava lendo sobre segurança em um email de um grupo de desenvolvimento de software e muitos alertavam sobre o perigo do uso de variáveis GET.

O que acontece é que se não for tratada de forma correta, as variáveis GET podem ser facilmente mascaradas por algum usuário mal-intencionado.

Então aqui vai a dica, quem tem o PHP com versão menor que 4.2.0, passe a diretiva register_globals = Off, assim o PHP não criará variáveis automaticamente, pois isso pode ser tornar um veneno ao seu site.

Trecho da documentação do PHP a respeito das variáveis globais:

"Quando on, register_globals injetará (veneno) em seus scripts todos os tipos de variáveis, como variáveis request de formulários HTML. Isto junta-se com o fato de o PHP não exigir inicialização de variáveis e significa que escrever códigos inseguros é muito mais fácil. Não foi uma decisão difícil, mas a comunidade PHP decidiu, por definição, desabilitar esta diretiva. Quando on, as pessoas usavam variáveis ainda sem saber realmente, com certeza, de onde elas vinham e podiam apenas supor. Variáveis internas que estão definidas no próprio script conseguem se misturar com dados requisitados enviados pelos usuários e desabilitando register_globals muda isto".

Bom, ainda uma dica melhor, atualizem seu PHP, tanto no Windows quanto no Linux, este é um processo relativamente fácil e de grande valia.

Outras dicas deste autor

Entrevista com Martin Michlmayr do Projeto Debian

Leitura recomendada

phpMD5raptor

Configurar PHP/Apache para limitar o acesso externo de arquivos pela URL (barra de endereços)

Verificando upload de arquivos no Linux com phpMussel

PhpSecInfo - relatório de segurança de seu ambiente PHP

Zoneminder com acesso restrito por usuário não mostra imagem da câmera de vídeo

  

Comentários
[1] Comentário enviado por removido em 23/12/2004 - 01:49h

Powww essa ai é das antigas =P , mais naum deixa de ser válido.. muitas pessoas usam ainda:

$acao
$acao

E tem uns que melhora mais ainda o caso:

$_REQUEST["acao"]

rs.

Qual é POST ?!?!, Qual é GET afhhhh, na "minha opinião" alêm de ser porco por naum saber de onde vem certas ações, usar assim e uma tremenda falha de segurança.


--
Abs
guinet gmail com


[2] Comentário enviado por removido em 23/12/2004 - 01:51h

Só complementando

Falha de segurança:

$acao_post

Correto:
$_POST["acao_post"]


Ao me referir $_REQUEST["acao"] quis dizer que naum se sabe de onde vem a acao em questão.


--
Abs,
guinet gmail com

[3] Comentário enviado por domluc em 23/12/2004 - 08:02h

eh justamente isso guinet, o bom programador (na minha visao) tem de ter sua aplicacao sobre controle. E nao saber de onde vem uma var eh no minimo perigoso. Hehehe, e apesar de ser das antigas tem muitos que ainda nao se dao por conta, ou pior, como menciono no artigo, deixam sua aplicacao demasiadamente antiga, com versoes com bugs conhecidos, e listados ja na pcmaster ;-)

abs
domluc at gmail dot com

[4] Comentário enviado por greafine em 23/12/2004 - 18:31h

Olá.

Só para complementar o mesmo problema acontece tanto com POST assim como COOKIES, que devem ser verificados utilizando $_POST e $_COOKIE respectivamente.

Até Mais.
Igor R. A.

[5] Comentário enviado por wellingtonaraujo em 23/11/2005 - 10:30h

caros amigos,
sou novo em php e não entendí os comentários dos senhores quanto ao $acao e $_POST!
Sei que $acao é uma variável e $_POST um metodo de envio de dados de um formulário (pelo menos eu acho)
Onde está a dúvida?

1) Bom, como devo tratar uma variável de maneira segura? $acao = "AÇÂO"; está errado? é inseguro? quando é inseguro e quando é seguro?

2) tenho um formulário de login com caixas de texto login e senha e um botao enviar que vai mandar pelo $_POST para outro formulário ou um arquivo.php para tratar o acesso. onde está a insegurança? como devo fazer então para ter segurança no envio?

Entendam, estou muito preocupado quanto a segurança, e gostaria de entender, tenho pouquissimo conhecimento em php, se puderem me enviar um exemplo de como tratar um form de login com os procedimentos seguros de envio até a gravação dos dados de maneira segura no banco (mysql) ficarei muito grato. aliás, já estou grato desde agora.

abraços para todos!

wellington araújo

[6] Comentário enviado por edgar.frastrone em 24/05/2006 - 17:22h

Amigo, para você que está começando, desculpa mas tenho que mandar o link de outro site, mas voltando, tenho um exemplo muito bom para você validar seus forms:
http://www.phpbrasil.com/scripts/script.php/id/700
esse script e muito bom!!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts