dedlfix: geschützter PHP Download auf Windows Server

Beitrag lesen

Tach!

Dein Skript muss folgendes können:

Nicht unbedingt, aber das wäre eine Vorgehensweise, wenn man wiederverwendbaren Code schreiben möchte. Für einen konkreten Einzelfall kann man auch Dinge wie Content-Type ermitteln weglassen, wenn nur eine einzelne Sorte von Dateien ausgeliefert werden soll.

Ein paar Ergänzungen:

  1. Benutzer authentifizieren (lassen)
  2. Zugriff erlauben oder verbieten

Macht gegebenenfalls der IIS bereits außerhalb und vor dem PHP-Script-Aufruf (z.B. NTLM-Authentification). Oder der Apache über .htaccess.

  1. Übergebenen Dateiname/Adresse UMFASSEND prüfen (sind nicht erlaubte Zeichen oder Zeichenfolgen wie "../" oder "..\" drin?), eventuell Abbruch

Statt selbst nach den Punkten Ausschau zu halten, kann man realpath() verwenden. Und anschließend schauen, ob der Anfang vom absolut aufgelösten Dateinamen mit dem Verzeichnis übereinstimmt, dessen Inhalt ausgeliefert werden soll. Beim Selbst-Aufstellen der Regeln für die Punkte muss man sich gewiss sein, dass man nichts vergisst. realpath() macht jedoch den Job schon sehr viel länger.

dedlfix.