Ir para conteúdo
Fórum Script Brasil
  • 0

Uso do $_POST e $_GET


#Tigre

Pergunta

Olá pessoal,

no site que estou fazendo eu não estava usando o $_POST nas variáveis, mas fiquei sabendo que por motivos de segurança é sempre bom usá-lo.

Pelo que fiquei sabendo o $_POST é usado sempre em variáveis que vem de um formulário. Certo?

A minha dúvida é no caso do $_GET. Quando devo usar o $_GET ? Em quais tipos de variáveis?

Se alguém puder me dar a dica, agradeço.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

magic_quotes? magic_quotes é a diretiva que escapa automaticamente as variáveis super-globais, ou seja:

$oi = $_POST['hello']; // hello = 'Oi amigo'
// Sem magic quotes:
// $oi = 'Oi amigo'
// -----------------
// Com magic quotes:
// $oi = \'Oi amigo\'

Na verdade é outro nome, mas contém "magic_quotes" nele.

Abraços.

Editado por Durub
Link para o comentário
Compartilhar em outros sites

  • 0

É magic_quotes... até fui olhar no manual agora e tem o aviso de que não existe no PHP 6, acho que agora a linguagem vai começar a se livrar da piasada que sempre fez sites/sistemas terrivelmente mal feitos e que por isso acabou queimando o filme do PHP enquanto linguagem de programação.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Serra e pessoal, estou tentando usar estes comandos pra estragar a tabela mas não acontece nada.

Simplesmente ele guarda o comando no banco como se fosse algo digitado normalmente.

Esses comandos são digitados ali no campo do formulário mesmo?

Eu peguei os exemplos da wikipédia que você me passou.

http://es.wikipedia.org/wiki/SQL_injection

Como é que eu faço pra que o teste tenha efeito?

Link para o comentário
Compartilhar em outros sites

  • 0

Só uma dúvida, você sabe o que está fazendo de fato? Acho que antes de você tentar isso você deveria se informar quais diretivas do PHP previnem isso, o que o sistema pode fazer para se "defender" mesmo que quem o tenha programado não tenha feitos previsões sobre ataque e essas coisas. Acho que você deve primeiro criar um embasamento teórico pra depois ir pra prática, dá uma procurar na net, o google tem muita gente tratando disso...

Link para o comentário
Compartilhar em outros sites

  • 0

O que estou tentando fazer é ver se o site está ou não vulnerável a estes comandos maliciosos.

Mas Serra, não era só digitar o comando que o "estrago" estava feito?

Eu já coloquei aquela função anti_injection do Fábio e está bloqueando os comandos. Só que com ou sem a função não tá mudando nada.

A questão é usar um comando desses só pra testar mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Como eu disse, é fundamental que você se informe, existem diretivas no PHP que de uma foram ou outra previnem isso, não sei se você tá assim "li um tutorial de sql injection e já sou hacker", a coisa é bem mais profunda do que isso, existem N conceitos que o cara tem que saber, não é só ler um artigo da wikipedia e sair destruindo sistemas, provavelmente o seu servidor já está com diretivas preventivas ativas, então com ou sem a função já existe a dificuldade do SQL Injection...

Link para o comentário
Compartilhar em outros sites

  • 0

Serra, eu estou fazendo e testando no computador, ainda não mandei pro servidor.

Mas é bom então saber que é um pouco mais difícil de estragar o sistema, pois pelo que você tinha dito nas outras mensagens, parecia que o negócio era mais vulnerável do que eu imaginava. Fico até um pouco mais tranquilo.

O que resta então é colocar as funções necessárias pra tentar pelo menos dificultar os possíveis invasores.

Link para o comentário
Compartilhar em outros sites

  • 0

Serra, um perguntinha sobre o código abaixo.

Sobre a função "addslashes", eu sei que ela adiciona barra invertida a uma string. Mas qual seria a razão/utilidade disso?

/* Fabyo Guimaraes de Oliveira 17/12/2004*/
function anti_injection($string){

  $string = str_ireplace(" or ", "", $string);
  $string = str_ireplace("select ", "", $string);
  $string = str_ireplace("delete ", "", $string);
  $string = str_ireplace("create ", "", $string);
  $string = str_replace("#", "", $string);
  $string = str_replace("=", "", $string);
  $string = str_replace("--", "", $string);
  $string = str_replace(";", "", $string);
  $string = str_replace("*", "", $string);
  $string = trim($string);
  $string = strip_tags($string);
  $string = addslashes($string);

  return $string;
}

//aqui eu pego todos os dados vindos do form 
//e tratos todos de uma vez e já cria as variaveis correspondentes
foreach ($_POST as $campo => $valor) {
   $$campo = anti_injection ($valor);
}

Link para o comentário
Compartilhar em outros sites

  • 0

Como eu já disse, você deve pesquisar sobre o assunto para entender todos os poréns, só pela sua pergunta já dá pra ver que você não pesquisou, no MySQL alguns dados são colocados entre apóstrofes, por exemplo:

SELECT * FROM tabela WHERE id = '5'
Com o addslashes como isso ficaria?
SELECT * FROM tabela WHERE id = \'5\'

Qual o resultado? Deixo pra você pesquisar.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas também, os exemplos que manual PHP passa complica mais do que exemplifica.

O exemplo que tem lá é esse:

<?php
$str = "Seu nome é O'reilly?";

// Mostra: Seu nome é O\'reilly?
echo addslashes($str);
?>

Nem tinha me ligado que no SQL vai o apóstrofo.

Teve um colega num outro fórum que fez uma pergunta sobre esse código do Fabyo Guimarães.

Olha só:

Alguém poderia me informar o motivo de bloquear SELECT, DELETE, CREATE, etc. ao mesmo tempo que se escapa as aspas/apróstrofos? Qual seria o problema?

Serra, o que você responderia sobre esse questionamento?

Link para o comentário
Compartilhar em outros sites

  • 0

Serra, estou quase terminando essa parte de segurança. Acho que só está me faltando implementar o ítem 4 das sugestões que você me passou.

4 - Também é bom se previnir de ataques XSS (Cross Site Scripting) que dá pra fazer com as funções htmlspecialchars e htmlentities.

Pelo que andei pesquisando o que devo fazer é usar htmlentities para codificar as entradas. Só que pra variar surgiu a dúvida do que é codificar entradas.

você poderia, por gentileza, dar uma explicadinha sobre o que é "codificar as entradas"?

Agradeço novamente por sua ajuda, Serra.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...