[IMPORTANT] Niet-cryptografische UUID generator #8

Open
opened 2026-08-05 21:11:34 +02:00 by eddy · 0 comments
Owner

Probleem

src/utils/uuid.ts:8 gebruikt Math.floor(Math.random() * 16) voor ID-generatie. Dit is niet cryptografisch veilig en heeft een hogere kans op collisions dan crypto.randomUUID().

Voor een persoonlijke app met laag volume is het risico verwaarloosbaar, maar als twee clients ooit dezelfde ID genereren en een elkaars data overschrijven, is dat stille data-corruptie.

Oplossing

Vervang de hele functie door:

export function generateId(): string {
  return Date.now().toString(36) + Math.random().toString(36).substring(2);
}

Of als de runtime crypto.randomUUID() ondersteunt (React Native doet dit):

export function generateId(): string {
  return crypto.randomUUID();
}

Date.now() als prefix zorgt voor temporele uniciteit, Math.random() suffix vangt de rest.

## Probleem `src/utils/uuid.ts:8` gebruikt `Math.floor(Math.random() * 16)` voor ID-generatie. Dit is niet cryptografisch veilig en heeft een hogere kans op collisions dan `crypto.randomUUID()`. Voor een persoonlijke app met laag volume is het risico verwaarloosbaar, maar als twee clients ooit dezelfde ID genereren en een elkaars data overschrijven, is dat stille data-corruptie. ## Oplossing Vervang de hele functie door: ```ts export function generateId(): string { return Date.now().toString(36) + Math.random().toString(36).substring(2); } ``` Of als de runtime `crypto.randomUUID()` ondersteunt (React Native doet dit): ```ts export function generateId(): string { return crypto.randomUUID(); } ``` `Date.now()` als prefix zorgt voor temporele uniciteit, `Math.random()` suffix vangt de rest.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
eddy/weegschaal-app#8
No description provided.