Ich habe gehört, dass Leute hier und da im Internet Vorträge halten, dass es die beste Vorgehensweise ist, öffentlich zugängliche Datenbank-IDs in Webanwendungen zu verschleiern. Ich nehme an, sie meinen hauptsächlich Formulare und URLs, aber ich habe nie mehr als einen Schluck zu diesem Thema gelesen.
EDIT : Natürlich, jetzt, wo ich das frage, finde ich einige Ressourcen zu diesem Thema:
- /programming/2374538/obscuring-database-ids
- /programming/1895685/should-i-obscure-primary-key-values
- http://joshua.schachter.org/2007/01/autoincrement.html
Diese Links haben einiges von meiner Neugier befriedigt, aber die SO-Posts haben nicht viele Stimmen und sind nicht unbedingt auf das Thema in diesem Kontext ausgerichtet, sodass ich nicht sicher bin, was ich davon halten soll, und einige behaupten, dass die dritte Link ist Schwindel. Ich werde den Rest meiner Post intakt lassen:
Ich verstehe die Unterschiede zwischen Unbekanntheit und Sicherheit sowie wie die beiden zusammenarbeiten können, aber ich kann mir nicht vorstellen, warum dies notwendig wäre.
Gibt es eine Wahrheit, ist es nur Paranoia oder ist es einfach nur völlig falsch?
Ich kann mir Möglichkeiten vorstellen, dies zu tun, aber es fügt dem Anwendungscode natürlich eine Menge Komplexität hinzu. Unter welchen Umständen wäre dies sinnvoll? Wenn dies ist etwas , das Menschen oft tun, wie es in der Regel zum Einsatz? Hashing der Identifikatoren? Etwas anderes? Es scheint eine Menge Arbeit für nicht viel zusätzliche Sicherheit zu sein. Ich bin nicht auf der Suche nach echten Lösungen, ich möchte nur eine Vorstellung davon bekommen, wie / warum die Menschen dies in der realen Welt tun würden.
Gilt dies wirklich als "Best Practice" oder handelt es sich lediglich um eine Mikrooptimierung von geringem Wert?
ANMERKUNG : Ich denke, einige Leute haben möglicherweise die falsche Idee: Ich schlage nicht vor, dass schwer zu erratende IDs der einzige Sicherheitsmechanismus sind, offensichtlich gibt es die üblichen Zugriffskontrollen. Nehmen wir an, dass diese vorhanden sind und dass die bloße Kenntnis der ID oder der Hash-ID eines Datensatzes nicht ausreicht, um Zugriff zu gewähren.