Pregunta

Estoy desarrollando una aplicación ASP .Net MVC. Una de mis acciones requiere id como parámetro. Por ejemplo:

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

Como puedes ver, estoy usando Guid en lugar de Int . El tema es más cosmético. La url puede ser muy larga, como localhost / Detail / 0c157b42-379d-41d5-b9ba-83e9df9985b2 .

¿Es seguro tomar solo partes de Guid como localhost / Detail / 0c157b42 ?

¿Fue útil?

Solución

El

GUID está diseñado de tal manera que pretende ser único, pero ninguna parte de él no lo es. Consulte esta publicación de blog para obtener más detalles. Si necesita acortar el GUID, hágalo un buen hash, como SHA-1 o (si no tiene problemas de seguridad) MD5.

Otros consejos

No, no es seguro.

Sin embargo, puedes calcular un hash SHA-2 y tomar los primeros caracteres.

No, necesita el GUID completo, ya que existe la posibilidad de que un subconjunto no sea único.

Por ejemplo:

  

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

     

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

Note, solo el último número es diferente. Los comienzos son los dos iguales. Tampoco puede usar el extremo final del GUID ya que no hay forma de predecir qué parte del GUID cambiará cuando se cree.

Algunas otras opciones a considerar- * Si hay más de un Detalles con GUID que comienzan con 0c157b42, haga que la URL localhost / Detail / 0c157b42 muestre una lista de objetos de Detalles aplicables. * Alias ??de URL: permite una " URL amigable " campo en el objeto Detalles.

Puedes limpiar el GUID de -s y convertir el HEX a Base32 (A-Z, 0-5) que lo acortará a 16 caracteres.

Poco de una respuesta tardía, pero en caso de que alguien lea esto ...

dependiendo del uso, puede proporcionar un valor GUID acortado.

por ejemplo, si el valor de ID se genera y se le da al usuario como una clase de valor de token de autenticación, durante la generación, solo puede tomar muchos caracteres y compararlos con otros valores en uso. si hay alguna coincidencia, genere una nueva y vuelva a compararla hasta que sea única.

Esta técnica también es recomendable si también recorta un valor de hash del GUID ... solo para estar seguro. De hecho, cada vez que genera aleatoriamente un valor para utilizarlo como ID, debe asegurarse de que no esté "en uso"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top