Dr. Web Logo. Untertext: Seit 1997.
  • Beste Agenturen
  • Agentur-Standorte von A bis Z 🌇
  • Magazin
  • Newsletter 📩
  • Login
  • Agentur bewerben ✅
  • Kontakt
  • Werben 🎉
  • Sponsored Post
  • Jobs
Menü
  • Beste Agenturen
  • Agentur-Standorte von A bis Z 🌇
  • Magazin
  • Newsletter 📩
  • Login
  • Agentur bewerben ✅
  • Kontakt
  • Werben 🎉
  • Sponsored Post
  • Jobs
  • Werben
  • Gastbeitrag
  • Sponsored Post
  • Kontakt
  • Login
  • Newsletter
Suche
  • Beste Agenturen
  • Agentur-Standorte
      Beste Agenturen Augsburg Altstadt von oben.

      Augsburg

      Blick auf die Mittlere Brücke in Basel bei Sonnenaufgang.

      Basel

      Berlin bei Nacht, Blick von oben Richtung Fernsehturm.

      Berlin

      Das Ruhrstadion in Bochum von oben, bei Sonnenuntergang.

      Bochum

      Bonn von oben, mit Blick auf den Rhein.

      Bonn

      Dortmund von oben Panoramafoto.

      Dortmund

      Blick auf die Elbufer-Promenade Dresdens sowie Frauenkirche und Zwinger.

      Dresden

      Duisburg Innenhafen bei Sonnenuntergang.

      Duisburg

      Düsseldorf von oben mit Blick auf den Fernsehturm.

      Düsseldorf

      Die Skyline von Essen von oben.

      Essen

      Blick von oben auf das Bankenviertel in Frankfurt am Main.

      Frankfurt am Main

      Freiburg Innenstadt vom Münster aus fotografiert mit Blick Richtung Schlossberg und Sonnenuntergang..

      Freiburg im Breisgau

      Hamburg bei Nacht, Blick auf die Speicherstadt.

      Hamburg

      Blick auf das Neue Rathaus, Hannover.

      Hannover

      Agenturen in Innsbruck von oben mit Blick auf die Alpen.

      Innsbruck

      Karlsruhe von oben

      Karlsruhe

      Sonnenuntergang in Köln mit Blick auf den Dom. Im Vordergrund die Hohenzollernbrücke.

      Köln

      Leipzig Innenstadt bei Sonnenuntergang und von oben.

      Leipzig

      München bei Fön mit Blick in die bayerischen Alpen.

      München

      Nürnberg Altstadt Stadtmauer von oben

      Nürnberg

      Blick auf das Flussufer der Innenstadt von Regensburg bei Nacht.

      Regensburg

      Agenturen Salzburg: Blick auf die Altstadt und die Hohensalzburg.

      Salzburg

      Stuttgart von oben.

      Stuttgart

      Wien von oben. Blick auf den Stephansdom.

      Wien

      Zürich von oben.

      Zürich

  • Magazin
    • Content Marketing
    • CSS
    • E-Commerce
    • E-Mail-Marketing
    • Freelancer
    • Fotografie
    • HTML
    • Online-Marketing
    • Responsive Design
    • SEO
    • UX Design
    • Webdesign
    • Website erstellen
    • WordPress
    • Dr. Web Autoren
  • Jobs
Menü
  • Magazin
    • Content Marketing
    • CSS
    • E-Commerce
    • E-Mail-Marketing
    • Freelancer
    • Fotografie
    • HTML
    • Online-Marketing
    • Responsive Design
    • SEO
    • UX Design
    • Webdesign
    • Website erstellen
    • WordPress
    • Dr. Web Autoren
  • Jobs
Agentur eintragen →
Dr. Web Logo. Untertext: Seit 1997.
  • Beste Agenturen
  • Agentur-Standorte
      Beste Agenturen Augsburg Altstadt von oben.

      Augsburg

      Blick auf die Mittlere Brücke in Basel bei Sonnenaufgang.

      Basel

      Berlin bei Nacht, Blick von oben Richtung Fernsehturm.

      Berlin

      Das Ruhrstadion in Bochum von oben, bei Sonnenuntergang.

      Bochum

      Bonn von oben, mit Blick auf den Rhein.

      Bonn

      Dortmund von oben Panoramafoto.

      Dortmund

      Blick auf die Elbufer-Promenade Dresdens sowie Frauenkirche und Zwinger.

      Dresden

      Duisburg Innenhafen bei Sonnenuntergang.

      Duisburg

      Düsseldorf von oben mit Blick auf den Fernsehturm.

      Düsseldorf

      Die Skyline von Essen von oben.

      Essen

      Blick von oben auf das Bankenviertel in Frankfurt am Main.

      Frankfurt am Main

      Freiburg Innenstadt vom Münster aus fotografiert mit Blick Richtung Schlossberg und Sonnenuntergang..

      Freiburg im Breisgau

      Hamburg bei Nacht, Blick auf die Speicherstadt.

      Hamburg

      Blick auf das Neue Rathaus, Hannover.

      Hannover

      Agenturen in Innsbruck von oben mit Blick auf die Alpen.

      Innsbruck

      Karlsruhe von oben

      Karlsruhe

      Sonnenuntergang in Köln mit Blick auf den Dom. Im Vordergrund die Hohenzollernbrücke.

      Köln

      Leipzig Innenstadt bei Sonnenuntergang und von oben.

      Leipzig

      München bei Fön mit Blick in die bayerischen Alpen.

      München

      Nürnberg Altstadt Stadtmauer von oben

      Nürnberg

      Blick auf das Flussufer der Innenstadt von Regensburg bei Nacht.

      Regensburg

      Agenturen Salzburg: Blick auf die Altstadt und die Hohensalzburg.

      Salzburg

      Stuttgart von oben.

      Stuttgart

      Wien von oben. Blick auf den Stephansdom.

      Wien

      Zürich von oben.

      Zürich

Agentur eintragen →
Dr. Web » PHP » Sicherer Downloadcounter mit PHP

Sicherer Downloadcounter mit PHP

Sicherheitslöcher in Web-Skripten sind nichts Neues. Meist entstehen Einfallstore für Cracker, wenn unerfahrene Programmierer am Werk waren. Diese Probleme begegnen uns auch wenn es um die Einrichtung eines an sich einfachen Download-Zählers geht. Aufgabe:...

Sozial sein
Share on facebook
Share on twitter
Share on linkedin
Share on xing
Share on whatsapp
Share on email
  • 7 Kommentare
Lesedauer: 3 Minuten
  • von Rene Schmidt
  • 3. Mai 2006
Bookmarke mich
Share on pocket

minddraft AG

BIZ Digital Marketing

Dunkel Design | Webdesign Grafikdesign Logodesign

Warscher - Digital Experts

KnallBlauMedia

esTethik.media GmbH

Sicherheitslöcher in Web-Skripten sind nichts Neues. Meist entstehen Einfallstore für Cracker, wenn unerfahrene Programmierer am Werk waren. Diese Probleme begegnen uns auch wenn es um die Einrichtung eines an sich einfachen Download-Zählers geht.

Aufgabe: Ein Programmierer soll ein PHP-Skript erstellen, das die Anzahl der Downloads von auf dem Webserver gespeicherten Dateien zählt. Das ist im Grunde eine triviale Aufgabe. Das folgende Beispiel-Skript „sonicht.php“ erledigt das im Nu – aber verwenden Sie es NICHT, denn es ist ein Sicherheitsloch!

Screenshot

Das Skript kann zum Beispiel so aufgerufen werden: http://webserver/sonicht.php?name=DATEI.ZIP, wobei die angegebene Datei natürlich vorhanden und für den Webserver lesbar sein muss. Das Skript sendet an den Browser spezielle HTTP-Header und protokolliert den Download. Der Browser kann den Nutzer nach einer bestimmten Aktion fragen: DATEI.ZIP speichern oder mit einem Programm öffnen?

Das Skript macht was es soll. Aber es ist eine Einladung an Cracker. Es liefert Angreifern wertvolle Informationen für einen Angriff – zum Beispiel wenn als Dateiname „/etc/passwd“ angegeben wird – etwa so: „http://webserver/sonicht.php?name=/etc/passwd“.

Die Datei /etc/passwd ist auf Unix- und Linux-Systemen die Datei, in der die eingerichteten Benutzerkonten gespeichert sind. Noch schlimmer wäre es, wenn der Webserver mit den Superuser-, also Root-Rechten läuft. Dann wäre auch die Datei /etc/shadow vom HTTP-Server lesbar, welche die verschlüsselten Passwörter der Systembenutzer enthält. So hätte der Angreifer alle Informationen, um in Ruhe auf seinem eigenen Rechner einen Brute-Force-Angriff zu starten, dem simpel aufgebaute Passwörter binnen Sekunden zum Opfer fallen. Der Angreifer könnte sich dann ganz normal auf dem Server einloggen.

Und das ist nicht einmal alles. Es ist auch möglich, dem Webserver fremde Dateien „unterzuschieben“. Das geschieht nicht tatsächlich. Aber Nutzer könnten es so auffassen, beispielsweise bei dieser URL: „http://webserver/sonicht.php?name=http://crackerhost/trojaner.exe“. Das Skript würde die Datei herunterladen und dem Browser ganz normal übermitteln. Solche präparierten URLs könnten für Phishing-Ernten verwendet werden, was nebenbei bemerkt auch zu einem höheren Transfervolumen auf dem Server führen würde.

Ursache für diese Beispiel-Löcher sind Leichtgläubigkeit und Unerfahrenheit. Die wichtigste Maxime kennen Sie vielleicht: „Traue nichts und niemandem“. Alles, was öffentlich aufgerufen werden kann, kann Ziel von Angriffen sein. Daher müssen alle Eingaben grundsätzlich vor der Weiterverarbeitung geprüft werden. Im Negativ-Beispiel müsste man recht aufwändig den übergebenen Dateinamen von unerlaubten Zeichen und Zeichenfolgen säubern, was erfahrungsgemäß meist nicht besonders gut funktioniert. Oft wird auch etwas vergessen und schon ist die Sicherheit wieder dahin.

DrWeb_DownloadZaehler.php
Der DrWeb-Downloadzähler funktioniert nach einem anderen Prinzip als das unsichere Beispiel oben. Dem Zählscript werden keine Dateinamen übergeben, sondern nur Schlüssel, die in der Konfigurationsdatei auf konkrete Dateien abgebildet werden. Der Schlüssel „1“ steht beispielsweise für DATEI.ZIP, Schlüssel „6“ für eine andere Datei. Ganze Zahlen (Integer) haben den Vorteil, dass sie durch den (int)-Cast-Operator in PHP recht simpel von unerwünschten Zeichen befreit werden können – ganz ohne reguäre Ausdrücke. Die Zeichenkette „abc65def“ würde durch die Anweisung

 $variable = (int)"abc65def";

Die Anzahl der Zugriffe wird in einer kleinen Datenbank-Tabelle gespeichert.

Aus fünf Teilen besteht der Downloadzähler:

  1. /DrWeb_DownloadZaehler.php
  2. /DrWeb_DownloadZaehler_Dateien.php
  3. /DrWeb_DownloadZaehler_Konfig.php
  4. /lib/YDFramework2
  5. /lib/schema.mysql

Die erste Datei ist das Zählscript. Es protokolliert einen Download und liefert die in der Konfiguration definierten Dateien aus. In der zweiten Datei DrWeb_DownloadZaehler_Dateien.php werden den Schlüsseln Dateinamen zugeordnet, wobei Ausgangspunkt das wwwroot, also das Hauptverzeichnis des Webservers ist. In der Datei DrWeb_DownloadZaehler_Konfig.php müssen die Datenbank-Zugangsdaten eingetragen werden.

Der letzte Teil ist das Yellow Duck-PHP-Framework, welches schon in einigen unserer Scripts zum Einsatz kommt. Es bietet zahlreiche Methoden und Funktionen an, die häufig gebraucht werden und ohne ein solches Framework immer wieder neu implementiert werden müssten.

Die Installation…

Schritt 1
Laden Sie sich das Archiv des DownloadZählers herunter, entpacken Sie es. Entscheiden Sie, welche Datenbank das Skript nutzen soll. Geben Sie die Zugangsdaten der Datenbank in der Datei DrWeb_DownloadZaehler_Konfig.php an.

Schritt 2
Laden Sie die Dateien auf den Webserver, dessen Downloads Sie zählen lassen möchten. Notieren Sie sich die Pfade zu den Dateien ab wwwroot, tragen Sie sie in die Datei DrWeb_DownloadZaehler_Dateien.php. Achten Sie darauf, dass jeder Eintrag, also jede Datei eineneindeutigen ganzzahligen Schlüssel bekommt. Erlaubt sind nur ganze Zahlen größer oder gleich 1. Angenommen, Sie wollen die Downloads der Dateien „/downloads/datei1.zip“ und „/downloads/opendocument.odt“ zählen lassen. Die Definition müsste dann so aussehen:

      
$dl_ids[1] = "/downloads/datei1.zip";
$dl_ids[2] = "/downloads/opendocument.odt";

Schritt 3
Kopieren Sie das entpackte Archiv mit den bearbeiteten Konfigurationsdateien auf den Webserver.

Schritt 4:
Rufen Sie phpMyAdmin auf und wählen Sie die in Schritt 1 ausgesuchte Datenbank. Klicken Sie auf den Menüpunkt „SQL“ und dann auf „Durchsuchen“. Wählen Sie die Datei „schema.mysql“ aus dem Archiv und bestätigen Sie den Dialog.

Benutzen
Das Skript ist nun einsatzbereit. Wenn Sie das Skript in das wwwroot Ihres Webservers www.test.de installiert haben, können Sie mit der URL „http://www.test.de/DrWeb_DownloadZaehler.php?d=1“ den ersten Download starten. Der Aufruf „http://webserver/DrWeb_DownloadZaehler.php?d=1&do=Count“ gibt nur eine Zahl aus, nämlich die Anzahl der Downloads der Datei mit dem Schlüssel 1.

Wenn Sie die Anzahl Downloads einer Datei in einem eigenen Skript weiterverarbeiten möchten, schauen Sie sich bitte das Beispiel in der Datei DrWeb_DownloadZaehler_Aufruf.php an. ™

Links:

  • Download ZIP-Archiv (853 KB)
  • Yellow Duck PHP-Framework
  • Diesen Beitrag im Dr. Web Weblog diskutieren

Erstveröffentlichung 03.05.2006

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Rene Schmidt

Rene Schmidt

Agenturpartner

Online Solutions Group

München

DAZECON – Webdesign und Marketing

Dresden

Khoa Nguyen – Online Marketing Beratung & SEA / Social Ads / SEO Freelancer

München

TYPO3 & Shopware Agentur – 3m5.

Dresden

Webagentur klickbeben

Innsbruck

Alle Agenturpartner

Jobs

Junior Media Manager

München

Cloud Engineer Container & Kubernetes

Karlsruhe

Senior Online Marketing Manager

München

WordPress Developer – Vollzeit

Remote

Online Marketing Manager

München

Zum richtigen Job

Newsletter

Tipps, Tricks, Ratgeber. Unser Newsletter: Jeden Dienstag frisch gedruckt in Deinem Mail-Postfach.

Lust auf mehr? Wir empfehlen folgende Artikel:

Webtronix Media entwickelt individuelle Softwarelösungen für dein Unternehmen

Das Team um die Geschäftsführer Björn Steinleitner, Ingo Steinleitner und Claus Freiwald entwickelt für dein Unternehmen maßgeschneiderte Software. Denn Software „von der Stange“ beinhaltet oft nicht die Funktionen, welche dein Business braucht, um einen echten Konkurrenzvorteil gegenüber den Wettbewerbern zu erzielen. In der Softwareentwicklung setzt Webtronix Media auf PHP, MySQL, JavaScript, HTML & CSS. Auf Basis dieses etablierten Frameworks ist deine Softwarelösung immer zukunftsfähig.

 →   

Webdesign Trends 2022: Das erwartet uns

Animation, Interaktion und Immersion: Das neue Jahr bringt zahlreiche Trends im Webdesign mit sich und entwickelt einzelne Bereiche weiter. Bereits jetzt ist klar – in Sachen Webdesign-Trends hat das Jahr 2022 einiges zu bieten.

 →   

Google Fonts sind nicht mehr datenschutzkonform. Was nun?

Mit dem Urteil des Landgerichts München vom 20.01.2022 ist nun auch die Verwendung von Google Fonts über die Fonts API nicht mehr datenschutzkonform. Zeit sich nach einer Lösung umzusehen, wie Du dennoch Google Fonts weiterhin einsetzen kannst.

 →   

7 Antworten zu „Sicherer Downloadcounter mit PHP“
— was ist Deine Meinung?

  1. André Rumann sagt:
    11. August 2015 um 11:17 Uhr

    Hallo,

    warum steht der Downloadzähler nicht mehr zum Download zur Verfügung?

    Mit freundlichen Grüßen

    André Rumann

    Antworten
  2. raudi sagt:
    26. Januar 2010 um 0:03 Uhr

    Hallo!
    Ich schreibe mir gerade ein kleines Script, das mir die Anzahl der Downloads anzeigen soll. Nun möchte ich aber gerne statt der dl_id den Dateinamen angezeigt bekommen. Das Einfügen einer entsprechenden Spalte (dl_datei) in der Tabelle dl_zaehler ist nicht das Problem; nur: wie bekomme ich den Dateinamen (aus der DrWeb_DownloadZaehler_Dateien.php beim Registrieren der neuen Download-ID in die Tabelle?
    Danke, für die Hilfe!

    Antworten
  3. DIAMONDWEB sagt:
    1. September 2009 um 10:49 Uhr

    dass man keine GET-Daten ungeprüft in den code einbauen darf, sollte sich mittlerweile ja herumgesprochen haben.
    Deswegen aber 5000 libs einzubinden für so ein simples script, das ist dann wohl auch etwas übertrieben, oder nicht?

    Antworten
  4. SirDouble sagt:
    10. August 2009 um 15:07 Uhr

    Der Aufruf „http://webserver/DrWeb_DownloadZaehler.php?d=1&do=Count“ gibt nur eine Zahl aus, nämlich die Anzahl der Downloads der Datei mit dem Schlüssel 1.

    Antworten
  5. b-side sagt:
    6. August 2009 um 21:27 Uhr

    ganz nettes script!
    aber wie kann ich mir anzeigen lassen wie oft eine datei geladen wurde?
    möchte nicht jedes mal in datenbank rum suchen müssen.

    Antworten
  6. Sven Lennartz sagt:
    3. Juli 2009 um 14:31 Uhr

    direkt wohl nicht. aber man könnte ein ZIP draus machen. dann passt es.

    Antworten
  7. sr-ska sagt:
    3. Juli 2009 um 14:10 Uhr

    Ist es möglich eine PDF-Datei nicht direkt im Browser anzeigen zu lassen, sondern über den „Speichern Unter“ – Dialogfenster herunterzuladen, oder öffnen?

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Dr. Web Logo weiss.

Pionier für Digitale Transformation. Seit 1997. ✅  Wissen, Tipps, Ratgeber, Dienstleister: Wir bringen wir die digitale Transformation von Unternehmen praxisnah voran.

Share on facebook
Share on twitter
Share on linkedin
Share on xing
Share on whatsapp
Share on email

Wissen finden

  • Dr. Web Autoren
  • Amazon SEO
  • Content Marketing
  • CMS
  • CSS
  • Digitalisierung
  • E-Commerce
  • Freelancer
  • Jobs & Karriere
  • Online-Marketing
  • SEO
  • UX Design
  • Webdesign
  • Website erstellen
  • WordPress
  • WooCommerce
Menü
  • Dr. Web Autoren
  • Amazon SEO
  • Content Marketing
  • CMS
  • CSS
  • Digitalisierung
  • E-Commerce
  • Freelancer
  • Jobs & Karriere
  • Online-Marketing
  • SEO
  • UX Design
  • Webdesign
  • Website erstellen
  • WordPress
  • WooCommerce

Rechtliches

  • Datenschutzerklärung
  • Geschäftsbedingungen (AGB)
  • Impressum
  • Kontakt
  • Nach oben ↑
Menü
  • Datenschutzerklärung
  • Geschäftsbedingungen (AGB)
  • Impressum
  • Kontakt
  • Nach oben ↑

Für Agenturen & Unternehmer

  • Als Agentur eintragen
  • Beste Agenturen finden
  • Städte: von A bis Z.
  • Agenturen in Augsburg
  • Agenturen in Basel
  • Agenturen in Berlin
  • Agenturen in Bochum
  • Agenturen in Bonn
  • Agenturen in Bremen
  • Agenturen in Dortmund
  • Agenturen in Dresden
  • Agenturen in Duisburg
  • Agenturen in Düsseldorf
  • Agenturen in Essen
  • Agenturen in Frankfurt am Main
  • Agenturen in Freiburg
  • Agenturen in Hamburg
  • Agenturen in Hannover
  • Agenturen in Innsbruck
  • Agenturen in Karlsruhe
  • Agenturen in Köln
  • Agenturen in Leipzig
  • Agenturen in München
  • Agenturen in Münster
  • Agenturen in Nürnberg
  • Agenturen in Offenbach am Main
  • Agenturen in Regensburg
  • Agenturen in Salzburg
  • Agenturen in Stuttgart
  • Agenturen in Wien
  • Agenturen in Zürich
  • Digitalagentur finden
  • Webdesign-Agentur finden
  • Werbeagentur finden
Menü
  • Als Agentur eintragen
  • Beste Agenturen finden
  • Städte: von A bis Z.
  • Agenturen in Augsburg
  • Agenturen in Basel
  • Agenturen in Berlin
  • Agenturen in Bochum
  • Agenturen in Bonn
  • Agenturen in Bremen
  • Agenturen in Dortmund
  • Agenturen in Dresden
  • Agenturen in Duisburg
  • Agenturen in Düsseldorf
  • Agenturen in Essen
  • Agenturen in Frankfurt am Main
  • Agenturen in Freiburg
  • Agenturen in Hamburg
  • Agenturen in Hannover
  • Agenturen in Innsbruck
  • Agenturen in Karlsruhe
  • Agenturen in Köln
  • Agenturen in Leipzig
  • Agenturen in München
  • Agenturen in Münster
  • Agenturen in Nürnberg
  • Agenturen in Offenbach am Main
  • Agenturen in Regensburg
  • Agenturen in Salzburg
  • Agenturen in Stuttgart
  • Agenturen in Wien
  • Agenturen in Zürich
  • Digitalagentur finden
  • Webdesign-Agentur finden
  • Werbeagentur finden
Das große Dr. Web Icon-Set: 970+ Icons, im SVG-Format​

Lade Dir jetzt das Icon-Set
kostenlos herunter ↓

Über 970 Dr. Web-Icons, kostenlos.
Danke nein, ist nichts für mich.
Invalid email address
Vielen Dank! Bitte schau noch in Dein Postfach und bestätige die Anmeldung.