Domanda

Sto sviluppando un'applicazione ASP .Net MVC. Una delle mie azioni richiede id come parametro. Ad esempio:

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

Come puoi vedere, sto usando Guid invece di Int . Il problema è più estetico. L'URL può essere molto lungo, ad esempio localhost / Detail / 0c157b42-379d-41d5-b9ba-83e9df9985b2 .

È sicuro prendere solo parti del Guid come localhost / Detail / 0c157b42 ?

È stato utile?

Soluzione

GUID è progettato in modo tale da essere univoco, ma non lo è qualsiasi parte di esso. Vedi questo post sul blog per i dettagli. Se devi accorciare il GUID, prendine un buon hash - come SHA-1 o (se non hai problemi di sicurezza) MD5.

Altri suggerimenti

No, non è sicuro.

Puoi comunque calcolare un hash SHA-2 e prenderne i primi caratteri.

No, è necessario l'intero GUID poiché esiste la possibilità che un sottoinsieme non sia univoco.

Ad esempio:

  

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

     

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

Nota, solo l'ultimo numero è diverso. Gli inizi sono entrambi uguali. Non è possibile utilizzare la fine finale del GUID poiché non esiste alcun modo per prevedere quale parte del GUID cambierà quando viene creata.

Alcune altre opzioni da considerare- * Se sono presenti più dettagli con GUID che iniziano con 0c157b42, fare in modo che l'URL localhost / Detail / 0c157b42 mostri un elenco di oggetti Dettagli applicabili. * Aliasing URL: consente un "URL descrittivo" campo sull'oggetto Dettagli.

È possibile pulire il GUID di -s e convertire l'esadecimale in Base32 (A-Z, 0-5) che lo accorcerà a 16 caratteri.

Un po 'di risposta in ritardo, ma nel caso qualcuno legga questo ...

a seconda dell'uso, è possibile fornire un valore GUID abbreviato.

ad esempio, se il valore ID viene generato e fornito all'utente come una sorta di token di autenticazione di valore, durante la generazione è possibile prendere semplicemente molti caratteri e confrontarlo con altri valori in uso. se ci sono corrispondenze, generane una nuova e confronta nuovamente fino a renderla unica.

Questa tecnica è consigliabile anche se tagli anche un valore di hash del GUID .. solo per sicurezza. Infatti ogni volta che generi casualmente un valore da utilizzare come ID, dovresti assicurarti che non sia "già in uso"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top