Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E aí galere, tudo bem?
Eu estou matutando se com o envio de variáveis pelo navegador eu não fico suscetível a invasões, se eu tenho que tomar algum cuidado, se existe alguma técnica de segurança e o que se pode fazer contra mim e ao meu favor.
Gostaria de saber a opinião dos usuários!
Complementando, não passe dados sensíveis pela URL, tipo senhas. Prefira utilizar POST ou SESSION para estes dados.
Carlos Eduardo
Bom, de qualquer forma o método POST é mais seguro. Mas em algum momento você é meio que "obrigado" a enviar por GET, como em buscas.
As precauções começa por onde o lucaswxp disse, como o "is_numeric()", vejam alguns casos:
****
Vamos fingir que o cara apertou o submit e o formulário foi enviado via GET. E vamos fingir que a url ficou assim:
**
www.oimamae.com.br/resposta.php?nome=Lucas&idade=18&id_cidade=203
Bom, está bem simples né?! Mas só para você entender:
Na variavel nome, você está esperando uma string, né? Na idade um número inteiro. E no id da cidade que estava num select, você espera um número inteiro também.
Então valide mais ou menos assim:
if(is_string($_GET['nome'])) { $nome = $_GET['nome']; } else { echo "Informe o nome corretamente."; }
if(is_int($_GET['idade'])) { $idade = $_GET['idade']; } else { echo "Informe a sua idade utilizando apenas números."; }
if(is_int($_GET['id_cidade'])) { $id_cidade = $_GET['id_cidade']; } else { echo "Escolha sua cidade utilizando a lista de cidades."; }
Entendeu?
Outro exemplo:
Faz de conta que você quer fazer o login, daí o cara preenche os forms, se loga e caí no painel dele:
**
www.oipapai.com.br/painelCliente.php?id=402
Bom, não precisa nem detalhar muito, o cara pode muito bem alterar o id para 401 ou 360 e acessar a conta de um outro cliente.
Sem falar no risto de o cara conseguir burlar seu sistema mais fácilmente. Pois as variáveis estão na cara dele.
****
Conclusão: utilize GET quando é necessário que o usuário possa guardar aquela URL nos favoritos, como em uma busca. Também quando ele precisa voltar e avançar no navegador, como numa busca também.
Utilizando o método POST, você não consegue voltar/avançar as páginas.
Veja em que momentos podem utilizar POST ou GET:
POST: login, finalização de compras, cadastro, formulários que tenham dados sigilosos e etc.
GET: buscas, carrinhos, listagens com paginações, páginas em que o usuário pode favoritar, dados insignificantes para o usuário e etc.
Uma outra coisa, que pode ajudar a melhorar a segurança de passar variáveis por GET é utilizar URL Amigável. Vou dar um exemplo...
Trocar a página www.oipapai.com.br/PainelCliente.php?id=402 por www.painel.oipapai.com.br/402-nome-do-cara
Aí você pode validar se o nome bate com o id passado.
Carlos Eduardo
Bom, valeu pelas respostas em primeiro lugar.
O sistema que estou montando é meio complicadinho, se assemelha com um site de relacionamentos, então é necessário enviar algumas coisas pelo navegador mesmo, como páginas-perfil dos usuários ou páginas próprias de arquivos que são enviados por upload. Por isso eu tinha essa dúvida.
Como eu só vou esperar números (por exemplo usuario.php?id=55) e as páginas são públicas, tinha isso na cabeça de checar se o que eu estava recebendo realmente eram números (e não faz diferença se o cara vai acessar o perfil público do João ou do José). Agora a minha mente se clareou um pouco e sei que não estava viajando nas idéias.
Não é 100%, pois o usuario pode alterar a seu desejo, por isso deve-ser tratar as variáveis antes de usa-las. Por exemplo: Se você espera um numero, utilize is_numeric() etc...