mittelding
2011-09-18, 18:19:02
Hallo!
Mein Problem ist eigentlich nicht wirklich schwierig, habe jetzt schon einige Ideen zur Lösung, suche aber den saubersten Weg. Es geht darum, ähnlich wie bei Link-Shortener-Diensten wie bit.ly und goo.gl, Dateien unter kryptischen, generierten Links verfügbar zu machen. Die Dateien liegen dabei physikalsich außerhalb des web-roots und sollen eben nur auf diese eine Weise erreichbar sein.
Hier mal kurz die Anforderungen:
1. Die Links müssen nicht zwingend kurz sein, ist nur ein nice-to-have
2. Man soll nicht indirekte Rückschlüsse auf Dateinamen o.ä. machen können - der Link der Datei "Datei_1" sollte komplett anders aussehen als der Link der fast gleichnamigen "Datei_2".
3. Dementsprechend soll man an der URL auch nicht erkennen können, welches die nächste Datei ist, die intern verwaltet wird. Die URL-Namen sollten also schön über das ganze Band an Möglichkeiten verteilt sein.
Ich denke es wäre am besten, wenn die URL garnicht erst aus dem Dateinamen als Parameter erzeugt wird. Eventuell gibt es eine Möglichkeit, eine völlig isolierte und unabhängige URL-Erzeugungsmethode zu verwenden, welche am Dateinamen garnicht interessiert ist.
Jetzt suche ich natürlich die eleganteste Methode, dies zu realisieren. Dachte erst daran, die aktuelle Microtime durch eine fertige Hashfunction zu jagen und fertig. Allerdings wären wir dann sicherlich bei 20-30 Stellen, wie gesagt, eine URL mit 5-6 Stellen wäre nice-to-have.
Jetzt aber zur für mich interessantesten Frage: die URL wird ja praktisch Primärschlüssel in der Datenbank, oder zumindest Schlüsselkandidat. Finde es sehr unschön, erst in der DB nachzuschauen zu müssen, ob mein generierter Wert nicht schon vorhanden ist, dann im Programmfluss einen anderen Wert generieren zu müssen, dann wieder zu schauen ob dieser vorhanden ist usw.. eventuell kann mir die Datenbank da Arbeit abnehmen und den Wert selbst erzeugen? Habe mysql und postgresql zur Verfügung.
Danke!
Mein Problem ist eigentlich nicht wirklich schwierig, habe jetzt schon einige Ideen zur Lösung, suche aber den saubersten Weg. Es geht darum, ähnlich wie bei Link-Shortener-Diensten wie bit.ly und goo.gl, Dateien unter kryptischen, generierten Links verfügbar zu machen. Die Dateien liegen dabei physikalsich außerhalb des web-roots und sollen eben nur auf diese eine Weise erreichbar sein.
Hier mal kurz die Anforderungen:
1. Die Links müssen nicht zwingend kurz sein, ist nur ein nice-to-have
2. Man soll nicht indirekte Rückschlüsse auf Dateinamen o.ä. machen können - der Link der Datei "Datei_1" sollte komplett anders aussehen als der Link der fast gleichnamigen "Datei_2".
3. Dementsprechend soll man an der URL auch nicht erkennen können, welches die nächste Datei ist, die intern verwaltet wird. Die URL-Namen sollten also schön über das ganze Band an Möglichkeiten verteilt sein.
Ich denke es wäre am besten, wenn die URL garnicht erst aus dem Dateinamen als Parameter erzeugt wird. Eventuell gibt es eine Möglichkeit, eine völlig isolierte und unabhängige URL-Erzeugungsmethode zu verwenden, welche am Dateinamen garnicht interessiert ist.
Jetzt suche ich natürlich die eleganteste Methode, dies zu realisieren. Dachte erst daran, die aktuelle Microtime durch eine fertige Hashfunction zu jagen und fertig. Allerdings wären wir dann sicherlich bei 20-30 Stellen, wie gesagt, eine URL mit 5-6 Stellen wäre nice-to-have.
Jetzt aber zur für mich interessantesten Frage: die URL wird ja praktisch Primärschlüssel in der Datenbank, oder zumindest Schlüsselkandidat. Finde es sehr unschön, erst in der DB nachzuschauen zu müssen, ob mein generierter Wert nicht schon vorhanden ist, dann im Programmfluss einen anderen Wert generieren zu müssen, dann wieder zu schauen ob dieser vorhanden ist usw.. eventuell kann mir die Datenbank da Arbeit abnehmen und den Wert selbst erzeugen? Habe mysql und postgresql zur Verfügung.
Danke!