Ir para conteúdo
Biel.

codificar - criptografar id na url

Recommended Posts

codificar - criptografar id na url
bom dia a todos. Direto ao ponto. Pessoal abaixo temos uma tabela e um menu dinamico.
quero muito codificar, criptografar o id do banco de dados que é passado na url. Gostaria
muito de uma luz nesse sentido. Obrigado!
tabela_aprendiz
id   nome
1    curso_A
2    curso_B
3    curso_C
<?php
$sql = mysql_query("SELECT * FROM tabela_aprendiz")or die (mysql_error());
while($linha = mysql_fetch_array($sql)){
$id   = $linha['id'];	
$nome = $linha['nome'];
?>

<a href="index.php?id=<?php echo $id?>"><?php echo $nome?></a></li>

<?php
}
?>
no link curso_A exibe na url online -> www.seusite.com.br/index.php?id=1
no link curso_B exibe na url online -> www.seusite.com.br/index.php?id=2
no link curso_C exibe na url online -> www.seusite.com.br/index.php?id=3

no link curso_A exibe na url localhost -> localhost/nomedapasta/index.php?id=1
no link curso_B exibe na url localhost -> localhost/nomedapasta/index.php?id=2
no link curso_C exibe na url localhost -> localhost/nomedapasta/index.php?id=3
Pessoal, gostaria que não fosse possível o colega saber qual id está sendo passado na url.
Tipo: se os três ids que é passado na url estiver com aspecto conforme exemplo abaixo, então as coisas
ficará mais dificil para o atacante.
www.seusite.com.br/index.php?id=c4ca4238a0b923820dcc509a6f75849b
www.seusite.com.br/index.php?id=c81e728d9d4c2f636f067f89cc14862c
www.seusite.com.br/index.php?id=a87ff679a2f3e71d9181a67b7542122c

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua criptografia entra na exibição do link:

<a href="index.php?id=<?php echo encryptId( $id )?>"><?php echo $nome?></a></li>

Dentro do seu método (encryptId) você cria uma regra para gerar um md5.

 

Porém, como esta é um criptografia de mão única, você vai precisar aplicar a mesma regra na hora da consulta, o que pode afetar a performance, acredito eu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua criptografia entra na exibição do link:

<a href="index.php?id=<?php echo encryptId( $id )?>"><?php echo $nome?></a></li>

Dentro do seu método (encryptId) você cria uma regra para gerar um md5.

 

Porém, como esta é um criptografia de mão única, você vai precisar aplicar a mesma regra na hora da consulta, o que pode afetar a performance, acredito eu.

Lucas, obrigado por responder. Gostaria muito de um exemplo prático de como fazer isso.

 

já tentei com sh1, md5 - consegui criptografar o id do banco de dados que passa na url .

O problema é que o conteudo não exibe com id criptografado

tentei assim -> $idmenu   = sha1($linha['idmenu']);
tentei assim -> $idmenu   = md5($linha['idmenu']); 

O problema é que o conteudo não exibe com id criptografado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai na hora de exibir, vc precisa "reverter".

 

md5 e sha1 não são reversíveis. E é bem "inútil" isso ai.. não proverá nenhuma segurança ao sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai na hora de exibir, você precisa "reverter".

 

md5 e sha1 não são reversíveis. E é bem "inútil" isso ai.. não proverá nenhuma segurança ao sistema.

William, obrigado por responder . Gostaria muito de um exemplo prático de como reverter o id criptografado para que o conteudo seja exibido. Obrigado1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é possível, sha1 e md5 não são reversíveis.

Sua única alternativa é gravar no banco o ID já "criptografado", e então na hora de exibir, comparar coisas iguais, o ID criptografado da url, com o criptografado q já está no banco.

 

Porém, note que isso só deixará o sistema lento, pois se vc não criar um índice para esse campo, o banco precisará fazer um fullscan para encontrar o teu id.

 

E, como falei anteriormente, não faz nenhuma diferença em quesito de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

entendi William. Veja: Tenho visto na internet urls do tipo www.seusite.com.br/index.php?id=c4ca4238a0b923820dcc509a6f75849b3820dcc509a6f75849b3820dcc509a6f75849b

talvés usando base64_encode e base64_decode gostaria de ter uma base não o codigo completo de como se faz isso. Já rodei a internet inteira e não encontrei nada parecido. Depois que eu consegui criar, decidirei se vale ou não apena criptografar o id que passa na url.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já disse como fazer.

 

Leia novamente meus posts.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Biel., eu não entendo por que você gosta tanto de duplicar seus próprios tópicos.

 

Você já perguntou sobre isso nestes tópicos

http://forum.imasters.com.br/topic/529655-encriptar-url/

http://forum.imasters.com.br/topic/528790-encryptarcriptografar-url/

 

E as respostas foram as mesmas.

 

 

E não é a primeira vez que vejo você duplicando seus tópicos. Você está apenas fazendo flood. Se persistir, teremos de fechar todos esses seus tópicos duplicados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tbm gostaria de implementar essa segurança em todos os ids!! Estava vendo algumas criptografia que sao reversíveis mais tbm podem ser burladas. Então existe alguns algoritmos que fazem a criptografia com senhas!! Assim fica difícil saber qual algoritmo e a senha usada. Ou fazer igual o Willian falou guardar o id criptografado, mas acho isso inviável..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um novo tópico para tratar a sua dúvida, conforme descrito nas Orientações e Regras do Fórum de PHP.

 

De qualquer forma, não irá prover segurança nenhuma, conforme já foi discutido aqui mesmo neste tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Aprendiz7 eu hoje utilizo JWT para enviar tokens e parametros "criptografados" pela URL. Através de uma chave, é possível reverter isso. Veja o link abaixo e um exemplo que montei pra ti.

 

https://github.com/firebase/php-jwt

 

Exemplo de criptografia:

// * Gera o token com JWT
$jwtArray = array("ID" => "5"); // EXEMPLO COM ID 5
$jwtArray = (object) $jwtArray;

// * Gera o JWT
$token = JWT::encode($jwtArray, TOKEN_JWT);

// * Redireciona para a tela com dados de pagamento
header("Location: /produto?t=".$token);

 

Exemplo de recuperação da informação:

$jwt = JWT::decode($_GET['t'], TOKEN_JWT, array('HS256')); // * T é o parâmetro passado na URL, e o TOKEN_JWT é uma chave que você escolherá para criptografar as coisas

// * Transforma o objeto decodificado em array
$arrayInfo = get_object_vars($jwt);

print_r($arrayInfo); // * Vai retornar aquele ID.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

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