Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bobrinha

Função SQL Injection insegura...

Recommended Posts

Opa...................Pessoal calma ae... isso é um script que o proprio fabyo informo que nao está completa se não está completa significa que há algumas falhas.. Então não é necessario uma discução por causa que o proprio autor informo que não está completo =/Sobre o erro ai. me desculpa mesmo você usando esse comando não tem como você invadir e eu conheço muito bem o fabyo o kra programa muito e ele mais do que nunca a 1° coisa nos sistemas que ele cria ele analisa a segurançaEu gostaria que você posta-se aqui no forum para que todos sabibam uma maneira de como você iria invadir isso.. eu quero que você mostre e que mostre que você invadiu mesmo e como.. Pos da maneira que você fez isso é um erro de SQL. e não uma invasão ;)Bem e gostaria que os animos aqui não se alteram Ok? até mais ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erick só para concluir eu disse que a função nao é completa pois depende do resto, banco de dados bem modelado, criptografia na senha, e uma logica de usuario logado boa

 

a função esta fazendo o que ela propoe a fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de um tempo fora do fórum voltar pra tentar esfriar os animos da galera é algo bem intrigante, mas vou tentar:

Olhem, vocês estão certos. Os dois. Mas estão discutindo um com outro utilizando pontos de vista diferentes.

 

A função do fábyo é insegura sim, como disse o bobrinha, e é segura sim, como diz o fábyo. Complicou?

 

O fábyo diz que a função pega um valor que é passado como parâmetro, analisa, e, se tiver sql injection, remove e retorna a nova string formatada para uso nas suas queries.

Perfeito. É exatamente isso que a função faz. Sem tirar nem por. Ela não é um sistema de segurança! É apenas uma ferramenta para ajudar em um! Simples assim.

 

Já o bobrinha diz que a função é insegura, e que dá para utilizar sql-injection a partir da url. Ele está certíssimo. No código postado no começo, está mesmo fácil de se invadir pela URL. Ele apenas se equivocou nas palavras. O exemplo é que está inseguro. A função faz o que promete. E faz bem feito. Digo por que desde que comecei com php aqui no fórum que eu uso essa função e nunca tive problemas. Aliás bom saber que ela é do fabyo. Nunca soube de quem é. Agora posso colocar os créditos devidos.

 

Agora para fechar. Ambos estão certos, mas bobrinha, pega leve cara. Você meio que se exaltou ai velho. O exemplo postado pelo fábyo está mesmo inseguro. Mas é apenas um exemplo cara. Se quer ver este exemplo ficar seguro tente assim:

if($_SERVER['REQUEST_METHOD'] != "POST"){	die("Você não tem permissão para acessar esta página. você deve usar o formulário xxx na página xxxx");}$variavel = sql_inection($_POST['variavel']);$variavel = sql_inection($_POST['variavel']);
Pode testar, Aposto que os erros que você encontrou mandando códigos pela url vão desaparecer.

 

Bom, acho que era isso que eu tinha entendido do que cada um falou.

 

Espero que tudo tenha se resolvido.

 

P.S. Se alguém discordou do que eu disse acima, pelo amor de Deus, utilize-se da civilidade para responder. Odeio falta de educação contra meus posts. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

charlesschaefer só para esclarecer , esse assunto que você tocou nao tem nada haver com a função em si ou com segurança cabe ao desenvolvedor aplica-la corretamente usando as $_POST ou $_GET quando necessario e isso nao cabe a função.

 

e sobre as url denovo, se register_globals esta em off como deveria ficar

nao vai existir nenhuma variavel da url, se o script espera:

 

$campo = $_POST["campo"];

 

$campo só existira se for enviado via post se for url (get) nao existira

 

por isso que pra qualquer situação deve-se testar antes a variavel para nao ter erro, mesmo que uma pessoa acesse a pagina diretamente nao ira dar erro, mas ressaltando esses possiveis erros é de programação e nao aveta a segurança em si.

 

entao como ja falei cabe ao desenvolvedor tomar as defidas profidencias

 

e esse é meu lema nunca fazer nenhum script com erros ou possiveis erros

 

se você ver meu exemplo basico de cadastro completo você vai entender melhor sobre tratamento de erros, porque um sistema bem feito nao pode ter erros de programação.

 

bom é isso ai, e a função pra mim ta utrapassada eu nao uso ela, mas mesmo assim ela nao esta insegura, claro se souber usar

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

último post no tema, pq parece que meu filme ficou meio queimado aqui.Fabyo, eu sei que não tem nada a ver com sua função. o que tentei esclarecer é que ambos estavam falando de coisas diferentes. (um da função o outro do exemplo)Concordo plenamente que a função é segura. O resto é a cargo do programador. o que estava inseguro era o exemplo. E lógico, apenas se estiver utilizando register_globals on.Bom, mas o post perdeu mesmo o sentido. realmente não vale mais a pena manter a discussão.att[Editado]Ops. Eu vi o motivo de eu realmente estar errado. Escrevi que a "a função é insegura sim, como disse o bobrinha". Foi mal galera. Me expressei mal.Desculpem ai...:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, só pra encerrar, nao to bravo, nao to chateado com ninguem, se quiserem continuar nesse assunto por mim tanto faz, nao to levando pro lado pessoal, e se precisarem de mim só falar, to aqui pra ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

testa essa aqui se passar me avisar <?php // Teste 1... $_POST["usuario"] = "walace"; $_POST["senha"] = "Senha"; $_con = @mysql_connect("localhost","root",""); mysql_select_db("test",$_con); function anti_ataque($_sql) { if(get_magic_quotes_gpc()) { $_sql = stripslashes($_sql); } return mysql_real_escape_string($_sql); } echo "Teste 1...<br/>"; $_sql = "SELECT * FROM Usuario WHERE "; $_sql.= "userLogin = '" . anti_ataque($_POST["usuario"]) . "' AND "; $_sql.= "userPassw = '" . anti_ataque($_POST["senha"]) . "'"; $_res = mysql_query($_sql,$_con); if(mysql_num_rows($_res)>0) { $_r = mysql_fetch_assoc($_res); echo "Bem vindo {$_r["userName"]}"; } else { echo "Usuário ou Senha Inválido...Tente novamente"; } echo "<br/><br/>Teste 2 com o ataque...<br/>"; // Teste 2... $_POST["usuario"] = "jose_silva"; $_POST["senha"] = "' OR '1'='1"; $_sql = "SELECT * FROM Usuario WHERE "; $_sql.= "userLogin = '" . anti_ataque($_POST["usuario"]) . "' AND "; $_sql.= "userPassw = '" . anti_ataque($_POST["senha"]) . "'"; $_res = mysql_query($_sql,$_con); if(mysql_num_rows($_res)>0) { $_r = mysql_fetch_assoc($_res); echo "Bem vindo {$_r["userName"]}"; } else { echo "Usuário ou Senha Inválido...Tente novamente"; } ?>pq eu acho dificil valeu um abraço kakaroto

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.