È accettabile utilizzare un identificatore di chiave surrogata come parametro URL?

3

Esempio:

nel database ho un record come questo:

{
    id: 53,  
    part_number: 'MOTOR-OIL',
    description: 'Motor Oil'
}

Desidero utilizzare un collegamento che mostri questo record. Potrei fare riferimento al record in questo modo, usando la chiave surrogata:

http://localhost/show_record/53

oppure potrei utilizzare un identificatore specifico del dominio in questo modo, a condizione che sia univoco:

http://localhost/show_record/MOTOR-OIL

Esiste una best practice di un framework relativo al decidere quale usare? È accettabile utilizzare la chiave surrogata?

Note:

Nel mio caso, la chiave surrogata / artificiale è un PRIMARY KEY ed è improbabile che cambi. Il numero di parte potrebbe tuttavia cambiare, mantenendo la stessa chiave surrogata.

Nel mio caso il part_number dell'entità di dominio è univoco, ma nel caso generale, potrebbe non essere il caso, e potrebbero essere necessari più parametri per identificare univocamente un record, mentre id essendo una chiave surrogata tipicamente rimangono unici per varie convenzioni di database.

    
posta Dennis 14.12.2017 - 21:01
fonte

2 risposte

5

La risposta di Doc Brown copre i problemi di sicurezza. Un altro angolo è se questo è di fronte al pubblico.

http://example.com/show_record/motor-oil

è più probabile che migliori in SEO di

http://example.com/show_record/53

Se il mondo non lo vede, non importa (se entra nella tua rete questo non è il più grande vettore di attacco), se vuoi che i motori di ricerca lo trovino, allora gli id (guid o interi) non sono così buono.

    
risposta data 14.12.2017 - 23:44
fonte
4

Va bene, quando

  • non ti preoccupare che qualcuno possa usare quel valore surrogato per dedurre il numero di record nella tabella correlata

  • non ti preoccupare che qualcuno possa indovinare altri URL validi da quel numero

Questi sono problemi minori e, se necessario, è possibile superarli facilmente utilizzando qualcosa come un GUID o un valore hash salato come chiave surrogata.

    
risposta data 14.12.2017 - 23:02
fonte