Nun, was meinst du mit URL-Kürzung?
Es gibt sehr unterschiedliche Techniken. Die meisten Webseiten, AFAIK, verwenden diese Technik, um den Datenbankschlüssel einfach (in irgendeiner verschlüsselten Form) in die URL an einer Stelle zu bringen, an der er durch einen regulären Ausdruck geparst werden kann, und den Rest einfach mit Schlüsselwörtern zu ergänzen.
Beispiel von Amazon: http://www.amazon.de/Bauknecht-WA-PLUS-614-Waschmaschine/dp/B003V1JDU8/
Sie alles anstelle des Namens des Produkts eingeben, nur die ID am Ende ist wichtig.
Sie können jedoch Ihre Links sauber halten und überprüfen, ob es korrekt ist und 301 Weiterleitung an die echte URL oder eine kanonische URL, wenn eine falsche URL auftaucht.
jedoch:
Wenn Sie so etwas wie TinyURL tun wollen, ist meine Antwort ein klares Nein.
Es ist nicht gut genug.
Nun, es kommt darauf an.
Es ist nicht "sicher". Es wäre ziemlich einfach, URLs zu erraten. Ein besserer Ansatz wäre die Verwendung einiger kryptografischer Funktionen wie SHA-1/MD5.
Wenn es um Kollisionen geht kann ich nicht wirklich sagen. GUID wurde entwickelt, um keine Kollisionen zu haben, aber Sie verwenden nur die ersten 6 Zeichen. Ich weiß nicht, was genau sie im Algorithmus darstellen. Aber es ist definitiv nicht optimal.
Warum verwenden Sie nicht einfach den automatisch inkrementierenden Primärschlüssel der Datenbank? Wenn Sicherheit wichtig ist, müssen Sie auch mit mehr als 6 Zeichen gehen.
Auf einem Projekt, das ich habe so etwas wie
/Datenbank-Primärschlüssel/Hash-of-Primärschlüssel-mit-some-Token-oder-Client-Informationen/
Auf diese Weise habe ich Ich konnte direkt den Primärschlüssel in der Datenbank nachschlagen, was der schnellste Weg war, aber ich konnte auch verifizieren, dass der Link nicht von dem durch den Hash erzwungenen Brute gefunden wurde. In meinem Fall war der Hash die SHA-1-Summe des geheimen Tokens des Clients und des Primärschlüssels.
Aus Gründen der Neugier, warum sollte man sich mit einer UUID beschäftigen? Warum nicht zum Beispiel nur 5 Bytes aus einer zufälligen Instanz generieren? –
Ich begann mit einem zufälligen/System.nanoTime/die Mac-Adresse 'Bit dann erkannte, dass Uuid all diese :-) – Bozho
@Bozho Sie vielleicht [Base32 Kodierung aka Crockford Kodierung] (http: //www.crockford com/wrmg/base32.html), da es einige Vorteile wie das Entfernen von möglicherweise mehrdeutigen Zeichen wie 0 und den Buchstaben L hat. Sie werden mit einer längeren kurzen URL enden, aber wenn Sie keine Milliarden haben, lohnt es sich vielleicht. –