Voglio creare alcuni URL brevi per caricare file e collegamenti sul mio server. Abbastanza semplice, carico i file e il mio script mi restituisce un link. All'accesso, il collegamento viene tradotto nel file e il download inizia. Perché è moderno, voglio i miei collegamenti brevi e non così UUID4-like, perché sono molto lunghi.
Non voglio che qualcuno provi alcuni URL per trovare un link valido. Forse dovrei inviare solo 404 se un IP ha già 10 URL errati chiamati?
Per creare stringhe casuali corte ho pensato a quanto segue:
- Precarica una tabella SQL
(key, target)
dovekey
è case sensitive con tutti i possibili valori in un intervallo definito come[a-zA-Z0-9_-~=]{12}
. Quindi seleziona conWHERE target IS NULL ORDER BY RANDOM()
una chiave vuota e usala. Ciò garantirà che non genererò mai la stessa chiave due volte ma che richiede molto spazio di archiviazione e potrebbe essere troppo. - Genero una stringa UUID4 e lancio un algoritmo hash come SHA3 su di esso e utilizzo i primi 12 caratteri del risultato. Quindi provo a inserirlo nel mio tavolo. Se fallisce, ho bisogno di generare un nuovo UUID4 e così via ...
Naturalmente, questi sono pensieri molto teorici, perché penso che starò bene con 1000 chiavi all'anno. Ma come accorciare i servizi di url farlo? O non si preoccupano di "imprevedibilità"?