26 Punkte von GN⁺ 2023-11-26 | 6 Kommentare | Auf WhatsApp teilen
  • Sqids ist eine Open-Source-Bibliothek, die YouTube-ähnliche IDs aus Zahlen erzeugt
  • Die erzeugten IDs sind kurz, können mit einem benutzerdefinierten Alphabet erstellt werden, und es ist garantiert, dass es keine Kollisionen gibt
  • Ein Beispiel für eine bereitgestellte ID hat die Form https://example.com/Lqj8a0

Warum Sqids verwenden

  • Der Hauptzweck von Sqids liegt im visuellen Effekt
  • Wenn man in einer Web-App statt Zahlen IDs verwenden möchte, kann Sqids eine gute Wahl sein
  • Zu den Einsatzfällen gehören Linkverkürzung, URL-sichere Nutzung, Event-IDs, kollisionsfreies Codieren/Dekodieren und Einmalpasswörter
  • Für sensible Daten ist es nicht geeignet; bei Verwendung als Benutzer-ID kann die Anzahl der Benutzer offengelegt werden

Eigenschaften von Sqids

  • Kurze IDs aus nicht negativen Zahlen erzeugbar
  • Einfaches Kodieren und Dekodieren
  • Automatisch erzeugte IDs enthalten keine gängigen Schimpfwörter
  • Unterstützt Alphabet-Shuffling für benutzerdefinierte IDs
  • Unterstützt 40 Programmiersprachen, davon verwenden 15 das neue Design
  • Erzeugt in allen Versionen dieselben IDs
  • Kleine Bibliotheksgröße und freizügige Lizenz

Meinung von GN⁺

  • Die Sqids-Bibliothek ist nützlich für Entwickler, die in Web-Apps statt Zahlen kurze und kollisionsfreie IDs verwenden möchten
  • Die Bibliothek bietet visuell ansprechende IDs und unterstützt viele Programmiersprachen, was die Zugänglichkeit erhöht
  • Sie bietet Open-Source-Entwicklern vorteilhafte Möglichkeiten und steht unter der MIT-Lizenz, wodurch das Urheberrecht geschützt ist

6 Kommentare

 
haebom 2023-11-27

Gut geeignet, um Crawling zu verhindern.

 
stardust33 2023-11-30

Könnten Sie bitte etwas genauer erklären, wie sich damit Crawling verhindern lässt?

 
ragus 2023-12-02

Wenn die URL einfach posts/1, posts/2, posts/3 ist, lassen Crawler wohl einfach 1,2,3,4,5 ... durchlaufen.
Wenn die URL dagegen so etwas wie posts/L12Qsd, posts/dei24A ist, scheint das nicht zu funktionieren.

 
stardust33 2023-12-05

Ah! Danke für die Antwort.

 
jaypark 2023-11-27

Ich habe mich gefragt, worin der Unterschied zu hashids besteht, und als ich nachgesehen habe, stellte ich fest: Wenn man https://hashids.org eingibt, wird man zu https://sqids.org/ weitergeleitet. Offenbar haben sie den Namen geändert.

https://sqids.org/faq#hashids

 
GN⁺ 2023-11-26
Hacker-News-Kommentare
  • Möglichkeit, Business-Insights von Unternehmen zu gewinnen, die fortlaufende IDs verwenden

    • Zum Beispiel lässt sich anhand der bei der Registrierung vergebenen ID die Wachstumsrate eines Unternehmens abschätzen
    • Gilt für alle Ressourcentypen innerhalb einer Anwendung
    • Fraglich, wie wichtig der „Müllwert“ in der URL-Leiste heutzutage noch ist
    • Da die meisten Browser inzwischen den Großteil der URL verbergen, wird auf die breite Nutzung von UUID v7 gewartet; bis dahin werden ULIDs verwendet
    • Die eingebaute Zeitkomponente ist manchmal nützlich (z. B. bei Regeln zum Zusammenführen von Objekten)
  • Zweifel an der Erwähnung von Einmal-Passcodes

    • Passcodes sollten unvorhersehbar sein, müssen aber nicht zwingend eindeutig sein
    • Mit einer geeigneten Zufallsquelle funktioniert es, aber das Merkmal „mit Müllwerten gefüllt“ wirkt komplexer, als es tatsächlich ist
    • 4 bis 8 zufällige Ziffern funktionieren gut und bieten ein klar verständliches Sicherheitsniveau
    • Zahlen sind leichter zu verstehen als lateinische Buchstaben mit Groß-/Kleinschreibung, besonders für Nutzer von Sprachen mit anderen Schriftsystemen
  • Enttäuschung darüber, dass sich keine 128-Bit-Integer oder Byte-Arrays formatieren lassen

    • Damit wäre UUID-Formatierung möglich
    • Geringe Vorliebe für die Verwendung öffentlicher Integer-IDs
    • Bei aufsteigenden IDs besteht das Risiko, wichtige Informationen preiszugeben
    • Bevorzugt wird, UUIDs für URLs, QR-Codes usw. als Base64URL zu formatieren, um sie kürzer zu machen
  • In Ruby-Anwendungen wird eine Methode zur Konvertierung in eine hohe Basis verwendet

    • Sqids bietet eine Ruby-Bibliothek und erlaubt die Einstellung einer deutlich höheren Basis, einschließlich Großbuchstaben und Emojis
    • Es braucht viel größere Zahlen, bevor die Platzersparnis einen spürbaren Unterschied macht
    • Schwer einzuschätzen, ob es den Wert hat, dafür eine neue Abhängigkeit hinzuzufügen
  • Das Filtern von Schimpfwörtern kann durch das Design selbst zur Belastung werden

    • Um die Kodierung zu erhalten, muss die Liste verbotener Wörter unveränderlich bleiben
    • Andernfalls könnten frühere Sqids fälschlich dekodiert werden
  • Bevorzugt werden nanoid und die Verwendung eines sicheren Zeichenwörterbuchs

    • Statt einer hart codierten Implementierung zur Suche nach „schlechten“ Wörtern wird ein ähnlicher Wörterbuchansatz vorgeschlagen
    • Interesse an der Performance-Test-Suite wird geäußert
    • Da die Erzeugung von UUID v4 in den meisten Sprachen optimiert ist, stellt sich die Frage, ob eine benutzerdefinierte Lösung tatsächlich besser ist
  • Diskussion über die Verwendung zufällig generierter Strings

    • Einsatz für IDs, Tokens zur Passwortwiederherstellung usw.
    • Es wurden Millionen davon erzeugt, und täglich prüfen Hunderttausende diese
    • Es gibt keine bekannten Beschwerden über zufällige Content-IDs
    • Die moderne Gesellschaft hat offenbar so große Angst, jemanden zu beleidigen, dass Schimpfwortfilter inzwischen sogar auf Datenbank-IDs und Tokens zur Passwortwiederherstellung ausgeweitet werden
    • Wenn die Mindestlänge auf 8 gesetzt wird, ist es unwahrscheinlich, dass ein vollständiges Schimpfwort als komplette ID erscheint
  • Verwirrung darüber, dass im Abschnitt „Get Started“ Links zu 40 Sprachen angeboten werden

    • Von den 40 kann man nur mit 15 Sprachen tatsächlich loslegen; die übrigen 25 sind Skelett-Repositories, mit denen Nutzer lediglich Interesse bekunden sollen, indem sie das Repository mit einem Stern markieren
  • Frage, wie sich die Blocklist anpassen oder weiterentwickeln lässt

    • Wenn eine ID auf der Blacklist steht, wird einfach hochgezählt
    • IDs sind an den Inhalt der Blacklist gebunden; wenn man sie anpasst, werden bestimmte Segmente zuvor erzeugter IDs ungültig
  • In diesem Thread erwähnen viele, dass dies eine gute Methode sei, Insights aus IDs/Zahlen zu verbergen

    • Da sich die erzeugten Werte leicht dekodieren lassen, wird die Frage aufgeworfen, ob man nicht durch das Dekodieren einiger Zahlen dennoch an diese Insights gelangen kann