você está aqui: Home  → Arquivo de Mensagens

PHP - Compatibilidade entre versões

Colaboração: Marcelo de Gomensoro Malheiros

Data de Publicação: 10 de Fevereiro de 2003

A versão 4.3.0 do PHP (www.php.net) foi lançada recentemente, incorporando algumas novas funcionalidades e diversas correções de erros.

Como o PHP não mantém uma distinção entre série estável e de desenvolvimento (como acontece com o kernel do Linux), sempre utilizo a versão mais recente. Porém é recomendável ter alguns cuidados quanto à compatibilidade das versões 4.1.x, 4.2.x e a nova 4.3.0 do PHP.

O problema de todas as versões anteriores à 4.2.x é que qualquer variável passada na linha de um script se torna automaticamente global, o que é perigoso do ponto de vista de segurança:

   http://www.example.com/drink.php?beer=all

Isso faz com que a variável $beer seja definida globalmente durante a execução do script. Se por acaso o programador usava esta variável apenas internamente e se esquecia de inicializa-la, temos um problema, pois ao invés de começar vazia já vem com "all".

Por default as versões 4.2.x e 4.3.x vêm com esse mecanismo desligado (a configuração "register_globals" em "off"). Só que muitos scripts mais antigos dependem deste comportamento. Daí que se for necessário tal mecanismo pode ser ligado novamente de forma global, mas o ideal é ligar localmente, dentro da configuração do Apache ou em um arquivo ".htacces", para não ter que fazer isso globalmente:

  <Directory /var/www/default/rau-tu>
    Options  FollowSymLinks
    php_flag engine           on
    php_flag magic_quotes_gpc on
    php_flag register_globals on
  </Directory>

Vale a pena aprender a usar o mecanismo mais seguro, que é dizer explicitamente que uma determinada variável veio da query (http://www.php.net/release_4_1_0.php):

   echo $_GET['beer'];

Outro cuidado a ser tomado é com os "magic_quotes", que por default estão ligados, mas existem aplicações que precisam deles desligados. Esse recurso insere '\' automaticamente em variáveis externas.

Para se garantir, veja qual a configuração mais adequada e também force-a para o seu programa na configuração do Apache, como indicado no exemplo mais acima.

Uma última sugestão: torne o PHP disponível somente em certos diretórios, usando a configuração "engine on", e deixando "engine off" para os demais.



Veja a relação completa dos artigos de Marcelo de Gomensoro Malheiros

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script