Text

quinta-feira, abril 8

register_globals em tempo de execução??? NUNCA mais!!!!

Programador PHP que nunca ouviu falr na tão famosa diretiva register_globals que atire a primeira pedra. Não é de hj q essa bendita é condenada ou vista com maus olhos pela comunidade desenvolvedora...diga-se d passagem os mais experientes.

Como sempre há os pros e os contras, as falhas de segurança quando se utiliza tal diretiva é mto mais facil d ocorrer. Quer um exemplo prático? Todas as variáveis contidas em $_GET, $_POST, $_COOKIE e $_SERVER são automaticamente convertidas em variáveis do PHP se a diretiva esta em ON.

Outro exemplo interessante...suponhamos o link http://www.seusite.com.br/arquivo.php?var=conteudo, se e somente se seu servidor estiver configurado para register_globals = On, no script arquivo.php, haverá uma variável chamada $var, que terá o valor 'conteudo'. Uauuuuu... acreditem mas um atacante ou ate mesmo uma usuario mais antenado pode infiltrar códigos maliciosos em variáveis que nunca deveriam vir das fontes carregadas pelo register_globals.

Por isso o alerta, evite utilizar alguma aplicação q precise de register_globals= On. Em si a diretiva register_globals não é perigosa e não traz nenhum risco à segurança da sua aplicação, o que pode te prejudicar é utiliza-la em ON...ou seja....com ela ligada. No artigo "How to Install PHP on Windows (Fast PHP Tutorial Part 2)" o autor mostra como ligar a diretiva no php.ini. Nenhum segredo nisso, porém esse procedimento deve ser evitado!!

E há quem diga que na versão 6 do PHP essa configuração não irá mais existir....SHOW D BOLA......Ou seja....se vc utiliza essa função....acho bom começar a pensar em outra alternativa.

Vc caro colega...assim como eu....sabemos q algumas diretivas do PHP podem ser definidas/alteradas no php.ini em tempo de execução (leia mais sobre ini_set())...isso mesmo...ao se executar a aplicação. Mas essa afirmação não é válida para a register_globals. Sendo assim...podemos alterar essa diretiva,....acessando o php.ini ou criando/editando um arquivo .htaccess e mandando ele pro server de hospedagem (eu recomendo).

Ahhhaaa....mas nem tdo é tão bom e perfeito...em alguns servidores vc nunca poderá ter acesso as configurações do php...E pensando nisso há uma forma simples de garantir q suas variaves passadas por $_GET, $_POST, $_COOKIE e $_SERVER nunca sejam utilizadas ou transformadas em variaveis PHP

Sim, eu sei q a solução parece mto simples....mas é mto eficiente...acredite em mim....(eu mesmo já precisei utilizar isso)

No início da sua aplicação adicione as seguintes linhas:

foreach
($_GET as $var => $valor)
unset($$var);

foreach
($_POST as $var=> $valor)
unset($$var);

foreach
($_COOKIE as $var => $valor)
unset($$var);

foreach
($_SERVER as $var => $valor)
unset($$var);

Legalz...cara....mas o q afinal d contas essas linhas querem dizer???? Mto simples ....Dessa forma antes de iniciar sua aplicação vc esta limpando as variaveis q são carregadas automaticamente. O detalhe é....vc NÃO poderá utilizar nada...nadinha do register_globals...e de quebra garante q sua aplicação seja compativel com novas versoes....

Vale lembrar q essa é mais uma d minhas tecnicas orientadas a leite (cheias de gato heheeh)...mas é 100% garantido....e pode evitar dores d cabeça.


Dica de som: Pra quem ainda não ouviu, vale mto a pena curtir o novo album do TobyMac - Tonight...sem sombra d duvidas, um dos melhores!!!

0 comentários:

Postar um comentário