SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 30.12.2014, 20:08:55
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
Heinrich befindet sich auf einem aufstrebenden Ast
Uploadscript für Bilder

Hallo,

hatte ja Probleme mit den Filemanagern der Webeditoren. Und nun auch festgestellt, dass mein bisheriges Uploadscript locker manipulierte Dateien bzw. Dateiendungen durchlässt.

Nun habe ich ein neues erstellt und möchte euch fragen, ob ihr das für sicher haltet. (Es liegt zwar im passwortgeschützten Bereich, aber das waren die anderen angreibaren auch.)

Schon mal danke für Kritik und Hinweise!

PHP-Code:
<h3>Bilder für Webseite hochladen</h3>
<?php
// Hier wird das Fomular (siehe ganz unten) verarbeitet
if ($_POST['los']) {

$uploaddir _BILDPFAD_ABS;
$uploaddatei basename($_FILES['userfile']['name']);
$uploadfile $uploaddir $uploaddatei;
$dateiendung stristr $uploaddatei'.' );


echo 
"Uploaddatei: ".$uploaddatei."<br />";
echo 
"Uploadfile: ".$uploadfile."<br />";
echo 
"Dateiendung: ".$dateiendung."<br />";
echo 
"Größe: ".$_FILES['userfile']['size']."<br />";
echo 
"MIMETYPE: ".$_FILES['userfile']['type']."<br />";
echo 
"<hr />";

if (
exif_imagetype($_FILES['userfile']['tmp_name']) == false) {
    echo 
"kein Bild!!!!!<br />";
    exit;
    }
if (
substr_count $dateiendung'.' ) > 1) {
    echo 
"Wahrscheinlich doppelte Dateiendung<br />";
    exit;
    }
else {
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo 
"Datei ist valide und wurde erfolgreich hochgeladen.\n";
    }
    else {
    echo 
"Möglicherweise eine Dateiupload-Attacke!\n";
    }
}

        echo 
"<table border='1' width='80%'><tr><td>";
//        $_SESSION['bilddatei'] = $uploaddatei;
        
echo "<h3>Ergebnis Bild hochladen:</h3>";    
        echo 
"<b>Gerade hoch geladenes Bild</b> ";
        echo 
$uploaddatei."<br/>";
        echo 
"<img src='"._BILDPFAD.$uploaddatei."'><br />";
        echo 
"</td></tr></table>";


// Ende if ($_POST['los']) {
?>
HTML-Code:
<!-- Die Encoding-Art enctyoe MUSS wie dargestellt angegeben werden -->
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
    <!-- MAX_FILE_SIZE muss vor dem Dateiupload Input Feld stehen -->
    <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
    <!-- Der Name des Input Felds bestimmt den Namen im $_FILES Array -->
    Diese Datei hochladen:<br /> <input name="userfile" type="file" /><br />
  <p>  <input type="submit" name="los" value="Hochladen" /></p>
</form>
Mit Zitat antworten
  #2  
Alt 06.01.2015, 11:13:49
Benutzerbild von BozzaCoon
BozzaCoon BozzaCoon ist offline
Anfänger
 
Registriert seit: Dec 2014
Alter: 29
Beiträge: 20
BozzaCoon befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

Hallo Heinrich,
habe mir das Script mal geschnappt und damit rumprobiert.
Ich schildere dir hier meine Eindrücke:
- 0,477 MByte Bilder? zu klein für heutige Fotos zu groß für Avatare. Bin mir unsicher warum du die Größe gewählt hast.
- man kann mit leichtigkeit das Value im Editormodus jedes Explorers ändern / oder sogar anzeigen lassen und ändern (hidden --> text)

Sind keine schwerwiegenden Fehler nur hab ich dies festgestellt und mit dem Forum hier vergliechen...
Wenn ich hier im Forum Bilder hochlade die zu groß sind werden sie automatisch auf die passende größe gebracht
und ich erhalte keine fehlermeldung. Das passiert wohl nicht Clientseitig(wenn doch hab ich es nicht gesehen).
Wie man dies erreicht da habe ich leider keine Vorschläge.

Für mich als Anfänger sieht der Script aber soweit gut aus.
Lg BozzaCoon
Mit Zitat antworten
  #3  
Alt 06.01.2015, 11:42:28
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

Zitat:
action="<?php $_SERVER['PHP_SELF'] ?>"
Zum Glück hast du hier das echo vergessen, denn sonst würde es vermutlich XSS Attacken erlauben.
Mit Zitat antworten
  #4  
Alt 06.01.2015, 12:21:31
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
Heinrich befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

@BozzaCoon

Danke für den Tipp. Die Form habe ich wohl schludrig aus dem Netz kopiert. Max_file_size wird von meinem Script überhaupt nicht verarbeitet. Das sollte ich dort noch selbst definieren (aus der Form kann das weg).

Die ganze Anwendung läuft sowieso nur im geschützten Redaktionsbereich eines CMS, also kein für jeden zugänglicher Upload.

@DokuLeseHemmung

Danke - ich habe erst vor kurzem gelesen, dass $_SERVER['PHP_SELF'] problematisch sei. Ist es das nur mit "echo" oder auch so, wie es bei mir steht? Oder sollte ich den konkreten Namen der aufzurufenden Datei nehmen.

Was sagst du zu der Prüfung des Uploads?
Mit Zitat antworten
  #5  
Alt 06.01.2015, 12:49:31
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

Zitat:
Ist es das nur mit "echo" oder auch so, wie es bei mir steht?
So wie es bei dir steht, ist es komplett sinnfrei.

Zitat:
Was sagst du zu der Prüfung des Uploads?
Naja, ob du wirklich alle möglichen Image Typen unterstützen willst, kannst nur du wissen....
Mit Zitat antworten
  #6  
Alt 06.01.2015, 13:08:11
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
Heinrich befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

<?php $_SERVER['PHP_SELF'] ?> mag sinnfrei sein... jedenfalls funktioniert es...Dürfte es das nicht?

Mit den Mime-Typen hast du recht. Könnte ich noch auf jpg, gif und png eingrenzen.
Mit Zitat antworten
  #7  
Alt 06.01.2015, 13:55:38
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

Hi,

was Doku meint ist: PHP_SELF ist immer Mist!
Was du da machst ist nichts denn ohne echo kannst du den Part auch löschen und solltest es auch, denn dein "action" ist LEER und nimmt dadurch die aufgerufene URL als Ziel.
Überprüfe deinen Quelltext!

Dein Uploadscript ist noch sehr ausbaufähig.
Ich würde nie den Namen der Datei übernehmen!
Bsp.: Gerade bei Digitalkameras gibt es IMG_XXX.jpg 1000mal und die überschreiben sich
dann?

Benutze eine Datenbank oder Textfile für die Orginalname / timestamp.

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #8  
Alt 06.01.2015, 14:21:37
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

Zitat:
Zitat von Heinrich Beitrag anzeigen
<?php $_SERVER['PHP_SELF'] ?> mag sinnfrei sein... jedenfalls funktioniert es...Dürfte es das nicht?
Ohne echo tut es nichts. Also sinnfrei.
Mit echo ist es eine Gefahr.

HTML vor 5 erwartet zwingend das action Attribut.
Es darf leer sein. Dann füllt der Browser es, wie er es für richtig erachtet.

In HTML5 darf das action Attribut fehlen, wenn es aber vorhanden ist, dann muss es auch (sinnvoll) gefüllt sein.

Zu: $_SERVER['PHP_SELF']
Meist ist $_SERVER['SCRIPT_NAME'] angemessener.
Aber auf manchen Systemen ermöglicht auch dieses XSS Attacken.
Prüfe das vor der Verwendung.
Mit Zitat antworten
  #9  
Alt 06.01.2015, 15:03:54
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
Heinrich befindet sich auf einem aufstrebenden Ast
AW: Uploadscript für Bilder

Okay danke, das mit $_SERVER['PHP_SELF'] habe ich verstanden. Werde zukünftig $_SERVER['SCRIPT_NAME'] verwenden.

Wichtiger ist aber ja, dass ich das, was darüber (evt. manipuliert) reinkommt, kontrolliere. Mache ich bei Zahlen-Parametern mit
PHP-Code:
$id intval($_GET['id']); 
Bei sonstigem string mit Prüfung durch eine Whitelist bzw.
PHP-Code:
$string strip_tags($_GET['string']); 
Meint ihr, das ist sicher?

@Ckaos
Der Bildupload ist nur im geschützten CMS-Bereich; da habe ich die Übersicht über die Bildnamen. Aber du hast Recht - ich sollte das überschreiben noch ausschließen.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder nach DB Abfrage anzeigen space PHP Grundlagen 1 12.06.2006 10:06:20
Bilder darstellen schickimicky PHP Grundlagen 5 12.01.2006 16:49:06
Bilder aus dem Server in Tabellen anzeigen shehrazade PHP Grundlagen 7 10.10.2005 16:23:44
Bilder aus einem Verzeichnis holen hoschy PHP Grundlagen 3 20.12.2004 17:38:54
Bilder Problem Adromir PHP für Fortgeschrittene und Experten 3 06.04.2004 11:49:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:12:21 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.


© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt