Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Ofuscar parâmetros na url

Olá pessoal do Alura! Gostaria de saber se o Django implementa a funcionalidade de ofuscar dados (sensíveis) que são passados como parâmetros na url quando passados pelo método GET. Por exemplo, é o que o google faz quando pesquisamos algo no buscador, ou até no gmail; bom, sei que alguns frameworks implementam essa funcionalidade e gostaria de saber se o Django também o faz. Desde já muito obrigado! Abraços.

9 respostas
solução!

Olá, eu nunca precisei fazer isso, aliás, sempre precisei do contrário: URL's bonitinhas para ajudar na indexação do google. Porém, vejo que essa é uma necessidade real sua, sendo assim, você pode testar a seguinte app do Django (nunca usei, ok?):

http://django-unfriendly.readthedocs.org/en/latest/

Ele faz uma URL, por exemplo:

http://yoursite.com/music/awesome/the-melvins/

Virar

http://yoursite.com/u/E5v4uxuNSA8I2is33c6V8lqFTcdv_IxPLDGG/

No treinamento, os parâmetros são enviados via URL bonitinhas e app faz exatamente o que você quer.

Se conseguir bons resultados, não deixe de passar o feedback para nós.

Flávio, muito obrigado! É, cada necessidade requer uma solução não é mesmo!?!

Bom, agora pensando em resolver o problema da forma que você propos, com urls amigáveis; Django nos da essa possibilidade ou temos que utilizar uma biblioteca/plugin externo ?

URL amigáveis? Sim, e você aprendeu no treinamento, basta sacar de expressão regular e tudo está resolvido. Porém, se sua pergunta ainda é sobre ofuscação de URL, Django não dá suporte padrão, por isso indiquei o plugin.

Se consegui tirar sua dúvida, não deixe de marcar a resposta como solução. Quando mais rápido resolvermos, mais rápido podemos ajudar outras pessoas.

Abraço e sucesso!

Flavio, muito obrigado! Entendi! Bom, de fato Django nos permite trabalhar com url amigáveis, e isso é muito bom, como você disse, para melhor rendimento quanto aos motores de busca e etc. Contudo, gostaria de saber se há uma forma de fazermos o seguinte. Passamos por exemplo o id do usuário como parâmetro mas a url irá mostrar não um hash, como no plugin unfriendly, mas montara uma url amigável. Valeu d+! Aguardo...

Deixa eu ver se eu entendi: você não quer publicar o ID nas URLS. Você quer evitar esse problema:

http://seuDominio.com/usuario/1

Ah, se eu sei que existe o ID 1, eu posso maliciosamente fazer:

http://seuDominio.com/usuario/2

E acessar o segundo usuário, porque estou passando os ID's sequenciais então é fácil chutar. É isso?

Se for isso, você resolve da mesma maneira em PHP, Java ou qualquer outra tecnologia, basta usar um UUID no lugar do ID do produto. Não há mágica quanto a isso, você gera para seu usuário, além do ID, um ID único (uma espécie de hash, usando seus termos) e passa a usar esse ID no lugar do ID sequencial. Assim temos:

http://seuDominio.com/usuario/er433hdhdhdh233

Como saber agora qual é o próximo usuário? Não dá! Era isso a sua dúvida?

Novamente: isso não tem relação com uma tecnologia específica, isso é uma prática já feita há séculos que consiste na geração além do ID de uma entidade, seu UUID correspondente e em todos os lugares você passa a usar esse UUID.

Se não saber gerar um UUID, segue um link do stackoverflow para ajudá-lo:

http://stackoverflow.com/questions/534839/how-to-create-a-guid-in-python

Se tirei sua dúvida, não deixe de marcar a minha resposta como solução.

Nossa, muito obrigado pela aula, novamente! hehehe Mas então, marquei como resposta aquela no qual você me apresentou o puglin django-unfriendly, pois ele mesmo consegue, de certa forma, fazer um tipo UUID, e isso já resolve meu problema, pois protege a aplicação e não deixa a url tão 'desamigável' assim.

Novamente obrigado Flavio!

Ótimo, mas o plugin do Django trunca a URL inteira e ela deixe de ser amigável. Com UUID, sua URL fica bonitona (humanos conseguem, e robôs), porém a única coisa que fica truncada é o ID passado na URL, que usa um UUID.

Porém, se o app do Django que passei soluciona seu problema, tranquilo. Bom estudo e sucesso!

Muito bom! Me enriqueceu bastante. Escolhi utilizar o app do Django dessa forma:

If SEO is still important to you, you can pass some SEO juice to the filter: Melvins awesome

Bom, de qualquer forma gostaria de parabenizá-lo pelo curso Flávio! Quando sai o próximo curso de Python ou Django ? Tem previsão ?

Eu sinceramente gostaria de aprender mais sobre Design Patterns , testes automatizados e AJAX com Django.

Bom, de novo obrigado. Valeu!

Vou tomar nota das suas sugestões, principalmente a de design pattern. :) Sucesso e bom estudo!