[PHP] Datei in aktuellen Pfad laden.

Dieses Thema im Forum "Webentwicklung" wurde erstellt von thug-life, 31. August 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 31. August 2010
    Datei in aktuellen Pfad laden.

    Hallo erstmal

    Ich habe mir ein kleines List-Script für meinen Server.
    Daten aus dem DocRoot werden mir angezeigt, habe schließlich noch ein Upload-Formular erstellt um Daten dort abzulegen.

    Klappt auch ohne Probleme, nur wollte das so haben, dass die Daten in den Pfad hochgeladen werden, indem ich mich gerade befinde. Nur weiß ich nicht wie das hinbekomme.

    Meine upload.php

    PHP:
    <? php
    $path
    "./data/" . $HTTP_POST_FILES [ 'ufile' ][ 'name' ];
    if(
    $ufile  != none )
    {
    if(
    copy ( $HTTP_POST_FILES [ 'ufile' ][ 'tmp_name' ],  $path ))
    {

    Header ( "Location: index.php" );
    exit();
    }
    else
    {
    echo 
    "Error" ;
    }
    }
    ?>
    Die Daten werden in: ./data/ geschrieben egal in welchem Pfad ich mich befinde, ist auch klar,
    da er angegeben ist, nur was muss ich angeben, damit die Datei in den "aktuellen" Ordner landet.

    127.0.0.1/index.php?dir=Testordner%2F
    Steht in der Adresszeile wenn ich mich im Ordner: Testordner befinde, falls das weiter hilft.

    grezzes: thug-life
     
  2. 31. August 2010
    AW: Datei in aktuellen Pfad laden.

    vorsicht, mit dem script hast du schneller ne shell auf deinem server als du schauen kannst.

    als erstes speichert man uploads NIE mit dem angegebenen namen. vorallem wenn man nicht prüft welcher typ sich dahinter verbirgt. zudem ist ein zugriff in einem ordner über dessen namen ebenfalls nicht zu empfehlen, da man so u.u in jedes belibige verzeichnis wecheln kann (zb mit nem nullbyte).

    und da dazu kommt noch, dass du nicht prüfst ob die datei wirklich ein upload ist (move_uploaded_file). wenn du das script so einsetzen würdest wär dein server in kurzer zeit
    - eine spamschleuder
    - je nach ausstattung ein scan-stro, bot oder (socks5-)proxy
    - nicht mehr dein server

    arbeite in diesem fall lieber mit einer datenbank.
     
  3. 31. August 2010
    AW: Datei in aktuellen Pfad laden.

    dateinamen prüfen evtl. ändern und zur sicherheit nochmals prüfen z.b

    PHP:
    if( is_uploaded_file ( $file ))
    {
        
    move_uploaded_file (...)
    }
     
  4. 1. September 2010
    AW: Datei in aktuellen Pfad laden.

    Danke euch beiden
    Werde mir die Tipps zu Herzen nehmen.

    Jedoch benutze ich vor dem Upload-Script noch ein Login-Script, welches verhindert, dass
    ein anderer als ich Daten Hochladen kann.
    Jedoch werde ich das Upload-Script trotzdem nochmal überarbeiten, ich bedanke mich für
    die Sicherheits-Tipps.

    Komme leider immer noch nicht drauf, wie ich die Daten in das aktuelle Verzeichnis schiebe.

    greezes: thug-life
     
  5. 14. September 2010
    AW: Datei in aktuellen Pfad laden.

    Sofern du immer deine Get-Variable hast, dann mach es doch einfach so:

    PHP:
    if (!isset( $_GET [ 'dir' ])
      
    $getPath  'data' ;
    else
      
    $getPath  $_GET [ 'dir' ];

    $path "./" . $getPath . "/" . $HTTP_POST_FILES [ 'ufile' ][ 'name' ]; 
    Über die Sicherheitslücken dadrin wollen wir mal lieber nicht reden, bei falschem Get-Parameter würdest du unweigerlich Fehler bekommen, da in einen evtl nicht-existenten Ordner geladen werden soll.

    Abhilfe könnte zB ne switch-abfrage sein, in der du alle deine Ordner aufzählst:

    PHP:
    switch (  $getPath  ) {

    case 
    'ordner1' :
    case 
    'ordner2' :
    ....

    $getPath  $getPath ;
    break;
    default:
    $getPath  'data' ;
    }
     
  6. 14. September 2010
    AW: Datei in aktuellen Pfad laden.

    switch wär ne lösung, aber bei sehr vielen ordnern wird das ganze schnell unübersichlich.

    einfacher ist den parameter einfach zu filtern:
    PHP:
    $getPath  filter_input ( FILTER_GET 'dir' FILTER_SANITIZE_STRING FILTER_FLAG_STRIP_LOW  FILTER_FLAG_STRIP_HIGH );
    $getPath  strtr ( $getPath , array( './' , =>  '' '../'  =>  '' ));
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.