De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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