Suchen
Inside Forum
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > PHP > PHP

PHP Alles rund um PHP

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 10.06.2018, 21:24
george_martini george_martini ist offline
Neuer Besucher
 
Registriert seit: 10.06.2018
Beiträge: 11
Standard AW: Dateidownload ohne header

hier der Code, sofern dies helfen könnte.
PHP Quellcode:
if (isset ($_GET["downloadsingle"]) && $_GET["downloadsingle"] == "download")
    {
    $file = "daten/".$_GET["projektname"]."/Plan/".$_GET["ordner"]."/".$_GET["datei"];
       
    //die ("test= ".$file);
        if(file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($_GET["datei"]).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        flush(); // Flush system output buffer
        readfile($file);
        exit;
         }   
    }
Mit Zitat antworten
  #12  
Alt 11.06.2018, 07:25
Oliver Albers Oliver Albers ist offline
Forum-Mitarbeiter
 
Registriert seit: 03.12.2002
Beiträge: 27.411
Oliver Albers eine Nachricht über ICQ schicken
Standard AW: Dateidownload ohne header

Uh. Da solltest Du deine GET-Variablen noch ein wenig validieren. Wenn man da als böser Angreifer ein paar ".." mit rein macht, kann man damit alle Dateien auf dem Server, für die der Webserver Zugriffsrechte hat, herunterladen. Also z.B. auch alle PHP-Skripte von dir.
Du solltest also mindestens sichertsellen, dass weder projektname noch ordner noch datei "../" enthalten.
__________________
Olli
Mit Zitat antworten
  #13  
Alt 13.06.2018, 21:43
george_martini george_martini ist offline
Neuer Besucher
 
Registriert seit: 10.06.2018
Beiträge: 11
Standard AW: Dateidownload ohne header

vielen dank für die info, wie gesagt, bin kein Typischer Programmierer. hab mir alles selbst beigebracht. ich habe jetzt auch kein Problem wenn alle Programmiere nun über mich schimpfen, dass solche leute nichts im Web zu suchen haben, oder wie auch immer.
Bei dieser Webseite ist es jetzt nicht so tragisch wenn einer nun auch andere Daten hat. Dann sieht er halt mal einen Plan eines anderen Gebäudes. Mich würde aber trotzdem interessieren, wie du das genau meinst. wie man dies sicherer machen kann
hat glaube ich aber auch nichts hier in diesem begonnen Chat zu suchen.
vielen dank
lg Gernot
Mit Zitat antworten
  #14  
Alt 13.06.2018, 21:45
george_martini george_martini ist offline
Neuer Besucher
 
Registriert seit: 10.06.2018
Beiträge: 11
Standard AW: Dateidownload ohne header

aber zurück zu kommen auf meine Frage. gibt es eine Alternative für den Dateidownload ohne der Header Funktion, wo ich einen Datenbankeintrag generieren kann?
lg Gernot
Mit Zitat antworten
  #15  
Alt 14.06.2018, 00:11
Jens Clasen Jens Clasen ist offline
Vorbildlicher Helfer
 
Registriert seit: 12.02.2005
Beiträge: 14.726
Standard AW: Dateidownload ohne header

Falscher Ansatz. Beseitige die Ursache, warum die Header-Geschichte nicht funktioniert. In Deinem Fall ist es vermutlich eine Ausgabe, die vor dem header stattfindet.

Siehe dazu bitte:

Standardantwort/FAQ:
Antworten vom Server an den Browser bestehen im Regelfall aus zwei Teilen: 1.) HTTP-Header und 2.) Inhalt. (Eine tiefergehende Beschreibung findet sich im Wiki-Artikel HTTP Header.) Meist kümmert man sich mit PHP nur um den Inhalt und überlässt die Header dem Server und PHP. Aber wer eine der folgenden Funktionen:benutzt, mischt sich in die Header ein. Da die Header immer vor den Inhalt kommen müssen, darf man niemals ein echo oder ein print vor dem Aufruf der genannten Funktionen benutzen. Auch jegliches HTML vor dem öffnenden <?php muss man sich verkneifen. Sogar Leerzeichen und Zeilenumbrüche vor dem <?php gelten als Ausgabe und sind verboten.

Manche PHP-Editoren setzen bei Unicode unsichtbare Zeichen - sog. BOMs - an den Anfang der Datei. Auch die sorgen für Probleme. Die BOMs kann man aber bei jedem vernünftigen Editor abschalten.


Zu
Zitat:
Zitat von George_martini
Bei dieser Webseite ist es jetzt nicht so tragisch wenn einer nun auch andere Daten hat. Dann sieht er halt mal einen Plan eines anderen Gebäudes.
Da werden aber dann auch alle Deine PHP-Skripte und/oder z.B. Dateien mit Datenbank-Passwörtern ausgeliefert. Wenn Du für Projektname und Ordner ".." übergibst und für Datei "index.php", dann liefert das Ding den Code Deiner index.php aus. Willst Du das wirklich?

Da würde ich noch mal drüber nachdenken.

Gruß Jens
__________________
Schleichwerbung I - Schleichwerbung II
Mit Zitat antworten
  #16  
Alt 16.06.2018, 11:36
george_martini george_martini ist offline
Neuer Besucher
 
Registriert seit: 10.06.2018
Beiträge: 11
Standard AW: Dateidownload ohne header

vielen dank für deine Info. Leider fehlt mir im Moment die Zeit dazu die gesamte Webseite neu zu machen bzw. auch das know how. ich werde mich aber bestimmt einlesen und dieses Thema angehen.

welche alternativen gibt es zu der GET-Methode um die Sicherheit zu steigern?
Bin gerne bereit zu lernen, es hilft mir aber nicht viel wenn jemand etwas bemängelt ohne alternativen zu präsentieren. mir ist schon klar, dass es viele Möglichkeiten gibt. man kann aber bestimmt den einen oder andern Vorschlag machen. hilft vielleicht auch anderen .

herzlichen dank
Mit Zitat antworten
  #17  
Alt 16.06.2018, 12:34
protestix protestix ist offline
Engagierter Besucher
 
Registriert seit: 29.06.2016
Beiträge: 705
Standard AW: Dateidownload ohne header

Es geht nicht um Alternativen, sondern darum dass Daten die von aussen kommen und innerhalb des Scriptes verwendet werden, vorab auf Gültigkeit geprüft werden sollen.

Beispiele:

$_GET["datei"] kann ja alles Mögliche erhalten, davon ist zumindest erst mal auszugehen.

Nun überlegst du worauf der Benutzer Zugriff haben soll, in deinem speziellen Fall, welche Dateien er herunterladen darf.

Wenn es nur .pdf Dateien sind, dann hast du hier schon mal ein Kriterium.
Wenn alle .pdf Dateien lediglich Buchstaben aus dem ASCII-Bereich enthalten, dann ist das ein weiteres Kriterium.

In PHP gibt es diverse Funktionen, wie du Zeichenketten überprüfen kannst.

hier mit ctype und pathinfo
PHP Quellcode:
$_GET['datei'] = "$_SERVER[SCRIPT_NAME]";

$path_parts = pathinfo($_GET['datei']);

echo 'unsere Test-Datei lautet ungefiltert: ' . $_GET['datei'] . "<br>\n";

if (ctype_alpha($path_parts['basename'])) {
    echo "Der Dateiname besteht nur aus alphabetischen Zeichen.<br>\n";
} else {
    echo "Der Dateiname beinhaltet auch nicht erwünschte Zeichen.<br>\n";
}

if ($path_parts['extension'] !== 'pdf') {
    echo 'Der Dateiname hat keine pdf Erweiterung!';
}else{
    echo 'In Ordnung, da pdf Erweiterung.';
}

Bei mir erscheint dann folgende Ausgabe
Code:
unsere Test-Datei lautet ungefiltert: /test/New118.php
Der Dateiname beinhaltet auch nicht erwünschte Zeichen.
Der Dateiname hat keine pdf Erweiterung!

Wie du dir das programmierst und mit dem Fall des negativen Ergebnisses umgehst, bleibt dir überlassen.

Das hier ist jetzt keine Anleitung für richtig oder falsch sondern soll dir nur einen Ansatz geben.
Du musst dich in dem Bereich einlesen und weiterbilden.
Mit Zitat antworten
  #18  
Alt 16.06.2018, 12:45
george_martini george_martini ist offline
Neuer Besucher
 
Registriert seit: 10.06.2018
Beiträge: 11
Standard AW: Dateidownload ohne header

vielen dank für die Info. leider findet man im Netz so viele verschieden Infos. Da ist es für einen leihen schwer abzuschätzen was gut ist und was nicht.
werde mich aber auch auf diese Richtung weiter einlesen.
danke
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dateidownload (Header) manyu PHP 2 23.11.2007 14:32
header - dateidownload stefsch PHP 3 02.09.2007 14:32
Dateidownload mit header Stonebreaker62 PHP 19 29.07.2006 17:10
Dateidownload - was bewirken die header(...)-Aufrufe?? drathy PHP 15 27.06.2006 12:11
Neues Problem mit Dateidownload und Header GlamoWeb PHP 1 19.04.2006 23:33


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:52 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC