webForumDet fria alternativet

Skapa ett unikt ID för varje länk? UUID?

PHP

5 svar · 1 876 visningar · startad av xtreme

Medlem sedan juli 20002 056 inlägg
Frågan#1

Jag vill skapa ett unikt ID för varje länk i PHP.
Två användare ska inte kunna få samma ID och vill inte använda 1, 2, 3... etc eftersom man inte ska kunna gissa sig till ett ID.

Har tittat på UUID (GUID) men så sötte jag på att det verkar finnas olika versioner av det. Dessutom verkar det inte vara "inbyggt" i PHP utan man måste använda andra bibliotek? Stämmer det? Hittade även något till PHP som heter "uniqid" men rekomenderas inte för mitt endamål.

Vad är bästa sättet att generera unika id för varje länk? Hur gör jag det eller var hittar jag info om hur man gör det?

Om man satsar på UUID. Vilken version ska jag gå på då?

Medlem sedan juni 20006 031 inlägg
#2

Jag har använt mig av uniqid()

Medlem sedan juli 20002 056 inlägg
#3

Pedda skrev:

Jag har använt mig av uniqid()

Problemet är att jag inte vill att man ska kunna gissa sig till vad som har genererats vilket tydligen kan göras ganska lätt med uniqid() eftersom det baseras på tid.

Står även i dokumentationen http://php.net/manual/en/function.uniqid.php

Warning
This function does not create random nor unpredictable strings. This function must not be used for security purposes. Use a cryptographically secure random function/generator and cryptographically secure hash functions to create unpredictable secure IDs.

Caution
This function does not generate cryptographically secure tokens, in fact without being passed any additional parameters the return value is little different from microtime(). If you need to generate cryptographically secure tokens use openssl_random_pseudo_bytes().

Medlem sedan juni 20006 031 inlägg
#4

För min del var det tillräckligt.
Är nog inte så stor chans att någon gissar sig till vilken mikrosekund någon har skapat ett id. Du kan ju även lägga till parametern true, uniqid('', true)

Medlem sedan juli 2013280 inlägg
#5

Det finns ju andra sätt att göra samma eller liknande.

ID=123accf

Slumpa lite siffror efter ditt ID eller helt enkelt skapa en nyckel som man måste känna till för att ID't ska fungera.

ID=123&Key=accf

Ja, det finns många varianter! Du får helt enkelt improvisera! :-)

Medlem sedan feb. 20005 891 inlägg
#6

Pedda skrev:

För min del var det tillräckligt.
Är nog inte så stor chans att någon gissar sig till vilken mikrosekund någon har skapat ett id. Du kan ju även lägga till parametern true, uniqid('', true)

Man bör ha en tidsgräns för sina "tokens" också. Visst, man "gissar" ju inte på millisekunder rätt - men om du genererar 100 000 tokens och testar sig fram?

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)