#Tigre Postado Fevereiro 20, 2008 Denunciar Share Postado Fevereiro 20, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 14, 2008 Denunciar Share Postado Março 14, 2008 Só ressaltando que dependendo da configuração do PHP, ele mesmo já previne alguns tipos de SQL Injection, mas não me lembro quais são as diretivas que fazem isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Março 14, 2008 Denunciar Share Postado Março 14, 2008 (editado) 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 Março 14, 2008 por Durub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 14, 2008 Denunciar Share Postado Março 14, 2008 É 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Março 16, 2008 Autor Denunciar Share Postado Março 16, 2008 Vai deletar a tabela.Abraços.Mas vem cá, e como é que o maledeto sabe o nome da tabela. Imagino eu que pra fazer isso tem que digitar o nome da tabela no maldito camando. É por aí ou estou equivocado? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Norivan Oliveira Postado Março 16, 2008 Denunciar Share Postado Março 16, 2008 Na pratica...sql injection - http://youtube.com/watch?v=MJNJjh4jORY Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Março 26, 2008 Autor Denunciar Share Postado Março 26, 2008 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_injectionComo é que eu faço pra que o teste tenha efeito? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 26, 2008 Denunciar Share Postado Março 26, 2008 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Março 26, 2008 Autor Denunciar Share Postado Março 26, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 26, 2008 Denunciar Share Postado Março 26, 2008 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Março 27, 2008 Autor Denunciar Share Postado Março 27, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Março 30, 2008 Autor Denunciar Share Postado Março 30, 2008 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); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 30, 2008 Denunciar Share Postado Março 30, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Março 30, 2008 Autor Denunciar Share Postado Março 30, 2008 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Março 30, 2008 Denunciar Share Postado Março 30, 2008 Eu diria para o tal colega dar uma olhada no manual do MySQL, na parte de sintaxe. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 #Tigre Postado Abril 1, 2008 Autor Denunciar Share Postado Abril 1, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
#Tigre
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
40 respostass a esta questão
Posts Recomendados
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.