Klaus Stein: Frage zu Sicherheit

Hallo,

ich biete Dateien zum Download an, die über eine per $_GET übergebene ID (die natürlich kontextgerecht "behandelt" wird) dynamisch aus mysql generiert werden.

Welche Sicherheitsmaßnahmen sollte ich ergreifen, damit nichts gedownloadet werden kann, was ich nicht möchte?

User kann nur ID angeben. Downloadpfad steht im Script, Dateiname wird wie Datei dynamisch generiert und falls ID kein "int-Wert" bzw. nicht vorhanden, bricht das Script ab. Sollte doch eigentlich narrensicher sein, oder?

Freundlichst, Klaus

  1. User kann nur ID angeben. Downloadpfad steht im Script, Dateiname wird wie Datei dynamisch generiert und falls ID kein "int-Wert" bzw. nicht vorhanden, bricht das Script ab. Sollte doch eigentlich narrensicher sein, oder?

    Sofern den tatsächlichen Pfad dann niemand sieht und es dir reicht, dass jedermann die Files downloaden kann, wenn er die ID kennt - das sollte ausreichen.

  2. Tach!

    ich biete Dateien zum Download an, die über eine per $_GET übergebene ID (die natürlich kontextgerecht "behandelt" wird) dynamisch aus mysql generiert werden.

    Was bedeutet "über eine ID dynamisch generiert"? Heißt das, die Datei wird erst zur Zeit der Abfrage erzeugt?

    Welche Sicherheitsmaßnahmen sollte ich ergreifen, damit nichts gedownloadet werden kann, was ich nicht möchte?

    Berechtigungsprüfung und Sicherstellen, dass der Download nicht anderweitig unter Kenntnis einer anderen Adresse gestartet werden kann.

    User kann nur ID angeben. Downloadpfad steht im Script, Dateiname wird wie Datei dynamisch generiert und falls ID kein "int-Wert" bzw. nicht vorhanden, bricht das Script ab.

    Die Datei wird zur Laufzeit generiert, als eine richtige Datei? Warum gibst du die generierten Daten nicht gleich direkt aus? Ob die ID ein Integerwert ist oder nicht, musst du nicht explizit prüfen. Du kannst die Query an das DBMS auch mit anderen Werten als Integer stellen. Das Ergebnis ist dann dasselbe wie bei einer ungültigen Integer-ID. Diesen Fall musst du ja sowieso berücksichtigen.

    dedlfix.

    1. Die Datei wird zur Laufzeit generiert, als eine richtige Datei? Warum gibst du die generierten Daten nicht gleich direkt aus?

      Geht das?

      Ob die ID ein Integerwert ist oder nicht, musst du nicht explizit prüfen. Du kannst die Query an das DBMS auch mit anderen Werten als Integer stellen. Das Ergebnis ist dann dasselbe wie bei einer ungültigen Integer-ID. Diesen Fall musst du ja sowieso berücksichtigen.

      Routinefunktion. Ich erwarte Intwerte, also prüfe ich das. Mach ich eigentlich immer so. Auch bei float oder string zum Beispiel.

      Gruß, Klaus

      1. Tach!

        Die Datei wird zur Laufzeit generiert, als eine richtige Datei? Warum gibst du die generierten Daten nicht gleich direkt aus?
        Geht das?

        Warum nicht? Schreib deine Daten nicht in die Datei sondern in die Ausgabe.

        dedlfix.