Deze vraag is veel gesteld, met een andere woordkeuze (wat het moeilijk maakt om te zeggen:"Zoek het maar!"). Dit feit leidde tot een blogpost met de titel, De Uitgebreide gids voor URL-parametercodering in PHP .
Wat mensen hier willen doen
Wat mensen in plaats daarvan zouden moeten doen
Uitleg
Meestal willen mensen kort willekeurig ogende URL's. Dit geeft je niet veel ruimte om versleutelen en vervolgens authenticeren de databaserecord-ID die u wilt verdoezelen. Hiervoor is een minimale URL-lengte van 32 bytes vereist (voor HMAC-SHA256), wat 44 tekens is wanneer gecodeerd in base64.
Een eenvoudigere strategie is om een willekeurige string te genereren (zie random_compat
voor een PHP5-implementatie van random_bytes()
en random_int()
voor het genereren van deze strings) en verwijs in plaats daarvan naar die kolom.
Ook zijn hashids verbroken door eenvoudige cryptanalyse. Hun conclusie luidt:
De aanval die ik heb beschreven is aanzienlijk beter dan een aanval met brute kracht, dus vanuit een cryptografisch standpunt wordt het algoritme als gebroken beschouwd, het is vrij eenvoudig om het zout terug te winnen; waardoor een aanvaller de codering in beide richtingen kan uitvoeren en eigenschap 2 ongeldig maakt voor een ideale hash-functie.
Vertrouw er niet op.