FrageIdentitätsspalten und Sicherheit in einer RESTful Web-Anwendung
Identität autoinkrementierten Sollen Spalten haben einen Nicht-Standard-Samen/Schritt, wenn sie in einer RESTful Web-Anwendung verwendet?
Hintergrund
ich auf meiner ersten ASP.NET MVC-Anwendung ich arbeite und versuche, meinen Urls RESTful zu halten. Es gibt keine separate administrative Website für die Anwendung. Ich verwende Attribute, um zu steuern, wer auf welche Teile der Site zugreifen kann und welche Menüelemente für den aktuellen Benutzer basierend auf ihren Rollen im System sichtbar sind. Ich folge (meistens) dem ActiveRecord-DB-Muster und verwende synthetische IDs für meine Tabellen, einschließlich der Benutzertabelle, wobei die IDs automatisch generierte Identitätsspalten sind.
Es ist mir heute Morgen in den Sinn gekommen, dass es ein subtiles Sicherheitsrisiko für die Verwendung von Standard-Seeds für Identitätsspalten in einer RESTful-Anwendung gibt. Wenn Sie annehmen, dass administrative IDs, insbesondere die leistungsstärksten, idR zuerst in einer Anwendung erstellt werden, folgt daraus, dass sie die niedrigst nummerierten IDs im System sind. Wenn Sie nicht wirklich ein Loch in der Anwendung öffnen, kann die Verwendung von Standardwerten für den Seed/Increment es einem Cracker leichter machen, ein höherwertiges Ziel anzugreifen, indem einfach niedrig nummerierte IDs mit RESTful-Aktionen (wie ChangePassword - einer von die vordefinierten Aktionen in der ASP.NET MVC-Site-Vorlage).
Sollte ich meiner Benutzer-Tabelle zu meinem Arsenal von Best Practices für die Sicherheit hinzufügen, einen nicht standardmäßigen Seed zu setzen, zumindest? Ist der Effekt, dies zu tun, wert? Oder bin ich zu paranoid? Als eine verwandte Frage sollte ich die vordefinierten Vorlagennamen für kontobezogene Aktionen ändern.
Stimmen Sie damit überein.Es gibt mehrere Vorteile. Sie müssen nicht warten, bis Sie die Datenbank gefunden haben, um die eindeutige ID zu erhalten - Sie können sie generieren und sie bei Bedarf in die Warteschlange stellen. Sie können 64 als Basis verwenden und diese als 25-Zeichenfolgen übergeben, die Sie als Abfrageparameter in einer URL verwenden können. – JohnOpincar
Danke John. Und es gibt noch mehr Vorteile, wie die Fähigkeit, diese IDs für Offline-Arbeit oder Synchronisation usw. zu verwenden. GUID-PKs haben viele Vorteile (und Nachteile wie 4-mal so groß wie ein normales int oder schwer zum Debuggen zu erinnern) und Testen). – Lucero
Ich würde wetten, dass die meisten DBs die 4-fache Größenzunahme bewältigen könnten. Ich würde erwarten, dass dies, abgesehen von den größten DBs, keine großen Auswirkungen haben wird, wenn man bedenkt, wie billig Festplattenplatz und Arbeitsspeicher heute sind. – JoshBerke