Frage

Ich entwickle eine ASP.NET-MVC-Anwendung. Einer meiner Aktionen erfordert id als Parameter. Zum Beispiel:

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

Wie Sie sehen, ich bin mit Guid statt Int. Die Frage ist mehr kosmetischer Natur. Die URL kann sehr lang sein, wie localhost/Detail/0c157b42-379d-41d5-b9ba-83e9df9985b2.

Ist es sicher, nur Teile des Guid wie localhost/Detail/0c157b42 zu nehmen?

War es hilfreich?

Lösung

GUID ist so ausgelegt, dass es beabsichtigt ist, einzigartig zu sein, aber ein Teil davon ist es nicht. Siehe diese Blog-Post . Wenn Sie die GUID einen guten Hash verkürzen müssen -. Wie SHA-1 oder (wenn Sie nicht über Sicherheitsbedenken) MD5

Andere Tipps

Nein, es ist nicht sicher.

Sie können einen SHA-2 Hash davon berechnen aber, und nehmen Sie die ersten Zeichen dafür.

Nein, müssen Sie die gesamte GUID, da die Möglichkeit besteht, dass eine Teilmenge nicht eindeutig sein kann.

Zum Beispiel:

  

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

     

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

Beachten Sie, nur die letzte Zahl ist anders. Die Anfänge sind beide gleich. Sie können nicht das hintere Ende des GUID verwenden entweder da es keine Möglichkeit, vorherzusagen, welcher Teil der GUID ändern wird, wenn sein erstellt.

Einige andere Optionen erhebliche * Wenn es mit 0c157b42, hat zeigt die URL localhost / Details / 0c157b42 eine Liste der anwendbaren Details Objekte Start mehr als eine Einzelheit mit GUIDs ist. * URL Aliasing -. Ermöglichen eine "freundliche URL" Feld auf die Details Objekt

Sie können die GUID von ihm reinigen und die HEX zu Base32 (A-Z, 0-5) umwandeln, die es auf 16 Zeichen verkürzt.

Bit einer späten Reaktion aber falls jemand dies liest ...

abhängig von der Verwendung, können Sie zur Verfügung gestellt eine verkürzte GUID-Wert.

zum Beispiel, wenn der ID-Wert erzeugt wird und den Benutzer als Authentifizierungstoken Art von Wert angegeben werden, werden bei der Generierung können Sie einfach und wie viele Zeichen und vergleichen Sie es mit anderen in Gebrauchswerten. wenn irgendwelche Streichhölzer, dann erzeugt einfach einen neuen und neu vergleichen, bis seine einzigartig.

Diese Technik ist auch ratsam, wenn Sie auch einen Hash-Wert des GUID trimmen .. nur um sicher zu sein. In der Tat als ID verwendet werden, immer wenn Sie zufällig einen Wert generieren, dann sollten Sie sicherstellen, dass es nicht ‚bereits in Verwendung‘

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top