Pergunta

Estou desenvolvendo uma aplicação ASP .NET MVC. Uma das minhas ações requer id como parâmetro. Por exemplo:

public actionresult Detail(Guid id){
    return View();
}

Como você pode ver, eu estou usando Guid vez de Int. A questão é mais estética. O url pode ser muito longo, como localhost/Detail/0c157b42-379d-41d5-b9ba-83e9df9985b2.

É seguro tomar apenas partes do Guid como localhost/Detail/0c157b42?

Foi útil?

Solução

GUID é projetado de maneira tal que se destina a ser único, mas qualquer parte que não é. Consulte este post para mais detalhes. Se você precisa para encurtar o GUID tomar um bom hash-lo -. Como SHA-1 ou (se você não tem preocupações de segurança) MD5

Outras dicas

Não, não é seguro.

Você pode calcular um SHA-2 hash-lo embora, e tomar os primeiros caracteres do que isso.

Não, você precisa de todo o GUID já que há uma possibilidade de que um subconjunto pode não ser único.

Por exemplo:

0c157b42-379d-41d5-b9ba-83e9df9985b2

0c157b42-379d-41d5-b9ba-83e9df9985b3

Observe, apenas o último número é diferente. Os começos são a mesma coisa. Você não pode usar a extremidade traseira do GUID ou desde que não há nenhuma maneira de prever que parte do GUID vai mudar quando o seu criado.

Algumas outras opções para consi- * Se houver mais de um detalhes com GUIDs começando com 0c157b42, têm o localhost URL / Detalhe / 0c157b42 mostrar uma lista de aplicável detalhes objetos. * URL aliasing - permitir um campo "amigável URL" no objeto Detalhes

.

Você pode limpar o GUID de -s e converter o HEX para Base32 (A-Z, 0-5), que vai encurtar a 16 caracteres.

Bit de uma resposta tardia, mas no caso de alguém lê este ...

dependendo do uso, você pode fornecido um valor GUID encurtado.

Por exemplo, se o valor ID é gerado e entregue ao usuário como um token de autenticação tipo de valor, em seguida, durante a geração você poderia simplesmente tomar no entanto muitos personagens e compará-lo com outros em valores de uso. Se nenhum jogos, em seguida, basta gerar um novo e re-comparar até o seu único.

Esta técnica também é aconselhável se você cortar um valor de hash do GUID também .. apenas para ser seguro. Na verdade, qualquer tempo que você gerar aleatoriamente um valor a ser usado como ID, então você deve se certificar de que não é 'já em uso'

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top