Novidades no PHP 4.1.0
aaaa
As novas variáveis do PHP 4.1.0 ($_GET, $_POST, $_REQUEST, etc) reduzem as chances de um script ser escrito de forma errada, dando chance para bugs de segurança.
A segurança do exemplo que o próprio PHP.net mostrou:
Simplesmente era fácil de ser burlado, pois bastava você por um ?authenticated=1 no request e voilá, temos um user autenticado.
O fato é que esse problema já fora previsto por muitos desenvolvedores que já estavam habituados em usar o unset() ou outros meios para evitar esse tipo de furo de segurança.
A partir de agora, temos 7 novos tipos de arrays globais que devem ser usados em substituição do antigo formato.
$_GET - variaveis de um request GET
$_POST - variabeis de um request POST
$_COOKIE - variaveis de cookies
$_SERVER - variaveis do httpd (ex:, REMOTE_ADDR)
$_ENV - variaveis do sistema
$_REQUEST - juncao de GET + POST + Cookie
$_SESSION - variaveis do modulo de Sessions.
Na próxima página eu inseri alguns exemplos e uma bibliografia de consulta.
As novas variáveis do PHP 4.1.0 ($_GET, $_POST, $_REQUEST, etc) reduzem as chances de um script ser escrito de forma errada, dando chance para bugs de segurança.
A segurança do exemplo que o próprio PHP.net mostrou:
<?php if (authenticate_user()) { $authenticated = true; } ... if ($authenticated == true) { echo "Authenticated!"; } ?>
Simplesmente era fácil de ser burlado, pois bastava você por um ?authenticated=1 no request e voilá, temos um user autenticado.
O fato é que esse problema já fora previsto por muitos desenvolvedores que já estavam habituados em usar o unset() ou outros meios para evitar esse tipo de furo de segurança.
A partir de agora, temos 7 novos tipos de arrays globais que devem ser usados em substituição do antigo formato.
$_GET - variaveis de um request GET
$_POST - variabeis de um request POST
$_COOKIE - variaveis de cookies
$_SERVER - variaveis do httpd (ex:, REMOTE_ADDR)
$_ENV - variaveis do sistema
$_REQUEST - juncao de GET + POST + Cookie
$_SESSION - variaveis do modulo de Sessions.
Na próxima página eu inseri alguns exemplos e uma bibliografia de consulta.
Páginas:
1
2
Ao invés de usar $_POST ou $GET, eu não poderia usar apenas $_REQUEST...
29/08/2003 6:41pm
(~20 anos atrás)
Sim, há um jeito, use o $_SERVER["HTTP_REFERER"]. Atraves desta variavel voce tera o endereco de onde o visitante veio. Se o form estava em: http://meu.dominio.com.br/form.html e o action do form é http://meu.dominio.com.br/form.php, entao dentro do http://meu.dominio.com.br/form.php terá a variavel $_SERVER["HTTP_REFERER"] que basta um codigo:
<?PHP
if ('http://meu.dominio.com.br/form.html' != $_SERVER["HTTP_REFERER"])
{
print "Tentando burlar!";
}
?>
<?PHP
if ('http://meu.dominio.com.br/form.html' != $_SERVER["HTTP_REFERER"])
{
print "Tentando burlar!";
}
?>
10/04/2002 11:30am
(~22 anos atrás)
Sim, a seguranca melhora, pois restringe o escopo das variaveis que o usuario pode inserir no código. Assim sendo, um programador nao ira deixar, sem querer, as mesmas falhas que eram ocasionadas quando o escopo das variaveis do usuario eram globais.
03/04/2002 9:12pm
(~22 anos atrás)
"Bem, em termos práticos, o que antes era: Agora é: " Remete a ideia de q o modo anterior, apenas chamando a variavel naum eh mais valido?? Outra coisa, a segurança, na minha opinião naum melhora tanto pois c o programador usou o $_POST, basta o cara chamar o script d validação d um form q ele fez, naum??
[]'s
Felipe Lopes
[]'s
Felipe Lopes
03/04/2002 8:52am
(~22 anos atrás)
Ola Rafael,
Esclarecendo rapidamente: voce deve usar o $_GET ou $_POST ou $_REQUEST nos seguintes casos:
Use $_GET["valor"] em:
- <form action="script.php" method="GET">
<input type=hidden name=valor value=valor>
- script.php?valor=valor
- <form action="script.php?valor=valor" method="GET">
Use $_POST["valor"] somente em:
<form action="script.php" method="POST">
<input type=hidden name=valor value=valor>
Use $_REQUEST["valor"] e $_REQUEST["valor2"] em:
<form action="script.php?valor2=algo" method="POST">
<input type=hidden name=valor value=valor>
Caso eu nao tenha sanado sua duvida, para que voce quer saber se uma variavel veio de um form?
Esclarecendo rapidamente: voce deve usar o $_GET ou $_POST ou $_REQUEST nos seguintes casos:
Use $_GET["valor"] em:
- <form action="script.php" method="GET">
<input type=hidden name=valor value=valor>
- script.php?valor=valor
- <form action="script.php?valor=valor" method="GET">
Use $_POST["valor"] somente em:
<form action="script.php" method="POST">
<input type=hidden name=valor value=valor>
Use $_REQUEST["valor"] e $_REQUEST["valor2"] em:
<form action="script.php?valor2=algo" method="POST">
<input type=hidden name=valor value=valor>
Caso eu nao tenha sanado sua duvida, para que voce quer saber se uma variavel veio de um form?
02/04/2002 11:12pm
(~22 anos atrás)
Nem sempre é apropriado permitir o $_GET indiretamente usando o $_REQUEST.
Tudo o que for pedido em $_GET podera ser armazenado no log do servidor de paginas (Apache, etc) e nao é interessante permitir que os dados de login (senha, usuario) fiquem gravados de forma descriptografada de forma associada.
Claro que isso é se voce nao usar POST no seu form.