2017-03-25 2 views
2

Ich arbeite an einer Website, wo ich Benutzern erlaube, ein Bild auf einen Server hochzuladen. Um für file_put_contents() die richtigen Berechtigungen zu erhalten, musste ich den Benutzer auf dem Server zu www-data (der aktuelle Benutzer für den Apache-Server) ändern.Korrekte Berechtigungen für das Verzeichnis zum Ausführen von file_put_contents()

Ich frage mich nur, welche möglichen Sicherheitsprobleme dies schaffen kann, jemand mit mehr Erfahrung in der Lage, mehr eingehende Erklärung oder Alternativen geben, die sicherer wären?

Antwort

0
  1. in ein anderes Verzeichnis über www hochladen. Wenn der Angreifer alle ausführbaren Dateien hochladen würde, die er nicht ausführen kann ... wenn sie ausgeführt werden, können sie alles tun.

  2. Ändern Sie den hochgeladenen Dateinamen in einen anderen Namen. Speichern Sie die Datei nicht im vom Benutzer angegebenen Namen.

  3. Dateiberechtigungen nur zum Lesen ändern.

  4. Überprüfen Sie die Datei MIME-Typ nicht mit $ _FILES [ 'DFJK'] [ 'type'] ... diese verwenden, um den MIME-Typ

    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $_FILES['soup']['tmp_name']); 
    

    weil die

    $_FILES['filename']['type'] 
    

    überprüfen kann vom Benutzer geändert werden.

  5. überprüfen Sie auch die Dateigröße, weil sie sehr große Größe hochladen werden. und dann geht Ihr Server zum Denial-of-Service-Modus.

  6. können Sie auch htaccess verwenden, um die ausführbare Berechtigung für ein Verzeichnis zu stoppen.

    RemoveHandler .php .phtml .php3 
    RemoveType .php .phtml .php3 
    

    auch

    php_flag engine off 
    
Verwandte Themen