Alerta para uso de variáveis globais no PHP

Publicado por Lucas Stephanou em 23/12/2004

[ Hits: 10.776 ]

 


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

Banco de dados com hash md5 online

Verificando upload de arquivos no Linux com phpMussel

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

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