Dies ist eine Nachfrage zu Warum sind die Abfrageparameter für viele Websites (MySQL) sehr kryptische lange Ganzzahlen?. In Bezug auf Sicherheit und Skalierbarkeit. Bitte nennen Sie alle Ressourcen (online/offline).
Antworten
Zu viele Anzeigen?In Bezug auf Sicherheit und Skalierbarkeit können Sie jede URL verwenden, die Sie sich vorstellen können.
Normalerweise sind es die Lesbarkeit für Menschen und die Benutzerfreundlichkeit oder (häufiger) die Suchmaschinenfreundlichkeit, die die Regeln für den URL-Aufbau beeinflussen.
Sagen wir, PHP.NET ist berühmt für die php.net/echo-Funktion, die einen schnellen und einfachen Zugriff auf die Funktionsbeschreibung bietet. Das ist der Grund, solche URLs zu erstellen, nicht die Sicherheit.
Sicherheit und Skalierbarkeit haben wenig mit der Form einer URL zu tun. Einige Websites verwenden jedoch kryptische URLs als Sicherheitsmaßnahme für Bilder (z.B. Facebook). Diese Art von Sicherheit wird im Allgemeinen kritisiert, da jeder, der die URL kennt (z.B. durch Browser-Cache, Proxy-Cache, ...), auf die vermeintlich geschützte Ressource zugreifen kann.
Während eine saubere URL die Suchmaschinenoptimierung verbessert, bedeutet dies in der Regel eine langsamere Antwortzeit und damit eine beeinträchtigte Skalierbarkeit. Nehmen Sie eine URL wie http://example.com/user/Lars, die Ihnen die Profilseite meines Profils zeigt. Wenn mein Konto in der Datenbank nicht über meinen Kontonamen, sondern über einen Surrogatschlüssel (eine beliebige Nummer) verknüpft ist, muss das System zunächst die Benutzertabelle nach meinem Surrogatschlüssel abfragen, um den Rest der Informationen zu erhalten. Dies beeinträchtigt die Leistung, da eine weitere Tabelle abgefragt werden muss.
Obwohl ich mit der Antwort von Oberst Shrapnel vollkommen einverstanden bin, gibt es einige Fälle, in denen lange "kryptische" IDs zur Sicherheit und manchmal sogar zur Skalierbarkeit beitragen. Sharelockers (RapidShare und ähnliche) verwenden in der Regel die /ID/Filename
Struktur in ihren URLs, um Sicherheit durch Obskurität hinzuzufügen. Es wäre viel zu einfach für jemanden, alle Ganzzahlen oder gängigen Dateinamen auszuprobieren und auf sensible Informationen zuzugreifen.
Einige Leute wenden auch irgendwelche Prüfsummen-Algorithmen auf ihre Datenbank-IDs an, was es schwieriger macht, die zugrunde liegende Struktur herauszufinden und bestimmte Arten von Informationen "zu verstecken": Ich wette, viele Leute würden zögern, online für etwas zu bezahlen, wenn die URL für die Bestellung z.B. /order/2/
wäre. Die Verwendung von Prüfsummen kann auch zur Verbesserung der Leistung beitragen, da ungültige IDs ohne Abfrage der Datenbank verworfen werden können (nützlich, wenn jemand die URLs durch Brute-Force knackt).
Lange IDs tragen zur Skalierbarkeit bei, indem sie eine größere Auswahl an möglichen Zahlen bieten (Slashdot ist zweimal Opfer der Annahme geworden, dass "int(11) für alle ausreicht" - tut mir leid, kann die alte Geschichte nicht finden), und deshalb sehen Sie heutzutage Twitter und ähnliche Plattformen verschiedene Ansätze verwenden.
Wenn Sie eine breitere ID verwenden, können Sie auch mehr Informationen speichern, wie Zeitstempel, IP / Hostname, die den Datenbankeintrag erstellt haben, und so weiter, was entscheidend sein kann, wenn Sie eine verteilte Datenbankumgebung betreiben. Werfen Sie einen Blick auf die MongoID-Klasse Dokumentation, um eine bessere Vorstellung davon zu bekommen, wie es funktioniert.