php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.11.2010, 18:14  
Benutzer
 
Registriert seit: 05.09.2010
Beiträge: 55
PHP-Kenntnisse:
Anfänger
Kikatzu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Dateien beim Upload verbieten

Hallo Community,

ich möchte in meinem Upload-Script (unten) das Hochladen von Dateien außer "zip" und "rar" verbieten?
Oder wie kann man allgemein Daten verbieten ?

PHP-Code:
... method="post" enctype="multipart/form-data"
Ich weis das es hier, denke ich, hinkommt aber wie kann ich Dateien wie o.g ausschließen?

Code:

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>:: UploadKing.tk - The King of Uploader ::</title>
</head>

<body>
<style type="text/css">
body { 
        
  height: 820px;
  margin: 5px auto 0px auto;
  width: 760px;
        background-color: #E0EEEE;  
}

#top {
        border: Solid 1px #000000;
  height: auto;
  margin: 5px auto 0px auto;
  width: 760px;
        background-color: C1CDCD;  
}
  
#titelzeile {
 background-color: grey;
 font-family: Arial;
 font-size: 12px;
 font-weight: bold;
 letter-spacing: 0.2em;
 background-color: #Grey;
 border: Solid 1px #000000;
 margin: 0.8em 0 1em 0;
 padding: 0.2em 0.2em 0.2em 0.9em;
}

#inhalt {
 font-family: Verdana, Arial, Sans-Serif;
 font-size: 12px;
 color: #000000;
 background-color: #C9C9C9;
 border: Solid 1px #000000;
 padding: 5px 0px 5px 5px;
 margin: 5px 0px 8px 0px;
 line-height: 18px;
 overflow: Auto;
 border-radius: 6px;
 -moz-border-radius: 6px;
}

#fuss {
 background-color: grey;
 font-family: Verdana, Arial, Sans-Serif;
 font-size: 0.8em;
 padding: 0.5em 0.5em 0.5em 0.9em;
 margin-top: 2em;
 color: #000000;
 background-color: #Grey;
 border: Solid 1px #000000;
}

#werbung {
 border: Solid 1px #000000;
  height: auto;
  margin: 5px auto 0px auto;
  width: 760px;
}

a {
 color: #CE3100;
 text-decoration: None;
}

a:visited {
 color: #CE3100;
}

a:hover {
 text-decoration: Underline;
}

hr {
 border: 0px;
 border-top: Solid 1px black;
 border-bottom: Solid 1px #FFFFFF;
}

input.eingabe {
 border: Solid 1px #9ECD30;
 margin-bottom: 2px;
}

textarea.textfeld {
 border: Solid 1px #9ECD30;
}

input.button {
 background-color: #DBEDB1;
 border: Solid 1px #9ECD30;
}
</style>
<div id=inhalt>
<table border=0 align=center>
 <tr>
  <td>
   <div id="titelzeile">
     Datei-Upload</div>
  </td>
 </tr>
 <tr>
  <td>
   <div id="inhalt"><form action="upload.php" method="post" enctype="multipart/form-data">
    Datei: <input name="datei" type="file">
    <input type="submit" value="Upload">
   </form></div>
  </td>
 </tr>
</table>

<table border=0 align=center>
 <tr>
  <td>
   <font color=red><h3>
     </div>

<?php
 
# Upload-Script by Kafei

if($_FILES["datei"]["name"] == "") {
  echo 
"<div id=inhalt> Laden sie eine g�ltige Datei hoch! </div>"
  exit;
}

if(
$_FILES["datei"]["tmp_name"] == "") {
  echo 
"<div id=inhalt><FONT COLOR=#ff0000>Fehler: Datei besitzt keinen Inhalt!</FONT></div>"
  exit;
}
 
if(
$_FILES["datei"]["size"] == ) {
  echo 
"<div id=inhalt><FONT COLOR=#ff0000> Fehler: Datei ist zu gro�!</FONT></div>";
  exit;
}

# Geben Sie das genaue Ziel-Verzeichniss an, ausgehend von dieser Datei!
move_uploaded_file($_FILES["datei"]["tmp_name"],
                   
"".$_FILES["datei"]["name"]);

  echo 
"<div id=inhalt><FONT COLOR=#0000>Die Datei <a href=http://kafei.cwsurf.de/".$_FILES["datei"]["name"].">".$_FILES["datei"]["name"]."</a> erfolgreich hochgeladen.</font></div>";

 
$datei "".$_FILES["datei"]["name"]."";
 
$size filesize($datei);
 
$size $size 1024;
 
$size round($size2);
  echo 
"<div id=inhalt>Dateigröße: ".$size." KB</div>";

?>


   </h3></font>
  </td>
 </tr>
</table>

</body>
</html>
__________________

Geändert von Kikatzu (20.11.2010 um 18:56 Uhr).
Kikatzu ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.11.2010, 21:35  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Mit HTML-Code kannst du nichts reißen. Du musst im PHP den Mime-Typ der hochgeladenen Datei prüfen und unerwünschte Inhalte dann abweisen.

PHP-Code:
$_FILES["file"]["type"
http://www.blablubb.at/2009/10/php-u...en-uberprufen/
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 21.11.2010, 13:15  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Kikatzu Beitrag anzeigen
Hallo Community,

ich möchte in meinem Upload-Script (unten) das Hochladen von Dateien außer "zip" und "rar" verbieten?
Falscher Ansatz: Warum sollten .zip- und .rar-Archive gefährlicher sein als all die anderen unzähligen Pack- und Archivier-Formate? Was du hier versuchst, nennt sich Blacklisting und arbeitet nach dem Motto: Erlaube alles, bis auf ein paar Ausnahmen. Das geht immer dann in die Hose, wenn man eine Ausnahme vergessen hat, oder eine neue Ausnahme hinzugekommen ist.

Die umgekehrte Vorgehensweise ist meist sinnvoller: Verbiete alles bis auf bekannte ("sichere") Ausnahmen. Das ist natürlich für einen Alles-"Upload-King" eine schwierige Aufgabe, weil ja gerade der Upload vieler Dateiarten erlaubt sein soll. Andererseits werden so viele Dateiformate auch wieder nicht benutzt. Die gängigsten Bildformate bspw. werden durch getimagesize() ganz gut abgedeckt. Andere, wie Videos oder auch Packer-Formate kann man oft an ihren Magic Bytes meist am Dateianfang erkennen. Eine kleine Auflistung der bekanntesten gibts in der Wikipedia.

Die Dateinamensendung (.rar, .jpg usw.) oder den Mime-Type, den der Client liefert, würde ich dagegen mit Vorsicht genießen. Beide müssen nicht mit dem tatsächlichem Dateityp übereinstimmen. Dazu muss man nichtmal seinen eigenen HTTP-Client benutzen. Niemand hält mich beispielsweise davon ab, ein RAR-Archiv mit der Endung ".ara" oder ".jpg" zu versehen.

Zitat:
Oder wie kann man allgemein Daten verbieten ?

PHP-Code:
... method="post" enctype="multipart/form-data"
Ich weis das es hier, denke ich, hinkommt aber wie kann ich Dateien wie o.g ausschließen? ...
Wie schon erläutert, kannst du auf der Browser-Seite gar nichts tun (weil die sich deiner Kontrolle entzieht).

Der einzige Angriffspunkt, den dir PHP bietet, ist der Zeitpunkt nach dem Upload, wenn du Zugriff auf das $_FILES-Array hast. Dies bietet dir die Möglichkeit, die hochgeladenen Dateien von ihrem temporären an einen endgültigen Speicherort zu verschieben, was du zum Teil schon in deinem(?) Script machst. Nicht erwünschte Dateien kannst du hier aussortieren, d.h. einfach nicht verschieben.

Geändert von fireweasel (21.11.2010 um 13:23 Uhr).
fireweasel ist offline  
Alt 21.11.2010, 14:33  
Benutzer
 
Registriert seit: 05.09.2010
Beiträge: 55
PHP-Kenntnisse:
Anfänger
Kikatzu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Dateitypen beim Uploaden verbieten

Hallo,

ich habe eine Frage, den ich möchte Dateien bei meinem Upload Script verbieten, habe jetzt auch den Code geschrieben:

PHP-Code:
if(mime_content_type($_FILES["datei"]["name"]) == "application/zip")
{
echo 
"<div id=inhalt>Fehler ist aufge...</div>";
exit;


Ich erhalte eine Error (Cant called to function... und so).
Was habe ich falsch gemacht?

Hier mal der ganze Code:

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>:: UploadKing.tk - The King of Uploader ::</title>
</head>

<body>
<style type="text/css">
body { 
        
  height: 820px;
  margin: 5px auto 0px auto;
  width: 760px;
        background-color: #E0EEEE;  
}

#top {
        border: Solid 1px #000000;
  height: auto;
  margin: 5px auto 0px auto;
  width: 760px;
        background-color: C1CDCD;  
}
  
#titelzeile {
 background-color: grey;
 font-family: Arial;
 font-size: 12px;
 font-weight: bold;
 letter-spacing: 0.2em;
 background-color: #Grey;
 border: Solid 1px #000000;
 margin: 0.8em 0 1em 0;
 padding: 0.2em 0.2em 0.2em 0.9em;
}

#inhalt {
 font-family: Verdana, Arial, Sans-Serif;
 font-size: 12px;
 color: #000000;
 background-color: #C9C9C9;
 border: Solid 1px #000000;
 padding: 5px 0px 5px 5px;
 margin: 5px 0px 8px 0px;
 line-height: 18px;
 overflow: Auto;
 border-radius: 6px;
 -moz-border-radius: 6px;
}

#fuss {
 background-color: grey;
 font-family: Verdana, Arial, Sans-Serif;
 font-size: 0.8em;
 padding: 0.5em 0.5em 0.5em 0.9em;
 margin-top: 2em;
 color: #000000;
 background-color: #Grey;
 border: Solid 1px #000000;
}

#werbung {
 border: Solid 1px #000000;
  height: auto;
  margin: 5px auto 0px auto;
  width: 760px;
}

a {
 color: #CE3100;
 text-decoration: None;
}

a:visited {
 color: #CE3100;
}

a:hover {
 text-decoration: Underline;
}

hr {
 border: 0px;
 border-top: Solid 1px black;
 border-bottom: Solid 1px #FFFFFF;
}

input.eingabe {
 border: Solid 1px #9ECD30;
 margin-bottom: 2px;
}

textarea.textfeld {
 border: Solid 1px #9ECD30;
}

input.button {
 background-color: #DBEDB1;
 border: Solid 1px #9ECD30;
}
</style>
  
<div id=inhalt>
<table border=0 align=center>
 <tr>
  <td>
   <div id="titelzeile"> Datei-Upload </div>
  </td>
 </tr>
 <tr>
  <td>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    Datei: <input name="datei" type="file">
    <input type="submit" value="Upload">
   </form></div>
  </td>
 </tr>
</table>

<table border=0 align=center>
 <tr>
  <td>
   <font color=red><h3>
     </div>

<?php
 
# Upload-Script by Kafei
 
$DE = array('php''htaccess''htpasswd''do''cgi'); // nicht erlaubte Dateiendungen 
  
if (in_array($_FILES$DE)) { 
  echo 
"<div id=inhalt> Unerlaubte Dateitypen! </div>"
  exit;
}

if(
$_FILES["datei"]["name"] == "") {
  echo 
"<div id=inhalt> Laden sie eine gltige Datei hoch! </div>"
  exit;
}

if(
$_FILES["datei"]["tmp_name"] == "") {
  echo 
"<div id=inhalt><FONT COLOR=#ff0000>Fehler: Datei besitzt keinen Inhalt!</FONT></div>"
  exit;
}
 
if(
$_FILES["datei"]["size"] == "") {
  echo 
"<div id=inhalt><FONT COLOR=#ff0000> Fehler: Datei ist zu gro!</FONT></div>";
  exit;
}

if(
$_FILES["datei"]["type"] == "application/zip"){
  echo 
"<div id=inhalt> Datei-Typ ungueltig! </div>"
  exit;
}

# Geben Sie das genaue Ziel-Verzeichniss an, ausgehend von dieser Datei!

  
$datei "upload/".$_FILES["datei"]["name"]."";
 
$size filesize($datei);
 
$size $size 1024;
 
$size round($size2);
  
move_uploaded_file($_FILES["datei"]["tmp_name"],
                   
"upload/" $_FILES['datei']['name']);

  echo 
"<div id=inhalt><FONT COLOR=#0000>Die Datei   <a href=http://kafei.cwsurf.de/upload/".$_FILES["datei"]["name"].">".$_FILES["datei"]["name"]."</a> erfolgreich hochgeladen.</font></div>";
 echo 
"<div id=inhalt>Dateigr??e: ".$size." KB</div>";
 exit;


?>


   </h3></font>
  </td>
 </tr>
</table>

</body>
</html>
__________________
Kikatzu ist offline  
Alt 21.11.2010, 14:37  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Kikatzu Beitrag anzeigen
Ich erhalte eine Error (Cant called to function... und so).
Fehlermeldungen bitte wörtlich hinschreiben.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline  
Alt 21.11.2010, 14:58  
Neuer Benutzer
 
Registriert seit: 19.11.2010
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
papakom befindet sich auf einem aufstrebenden Ast
Standard

Ich werf mal ein paar Sachen in den Raum...

Zitat:
Warnung
This function has been deprecated as the PECL extension Fileinfo provides the same functionality (and more) in a much cleaner way.
siehe mime_content_type
Des weiteren ist mime_content_type Teil der PECL Extension fileinfo und die ist bei einer PHP Version < 5.3 eben nicht standardmäßig aktiviert. Siehe dazu Installation

Und zum Schluss noch das, was du der Funktion übergibst. Der Wert unter dem Index "name" ist wirklich nur der Name der Datei. mime_content_type braucht aber einen Pfad zur Datei.
papakom ist offline  
Alt 21.11.2010, 17:11  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

*zusammenführ*

Unterlasse es künftig bitte, mehrere Threads zur gleichen Thematik zu erstellen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 22.11.2010, 18:54  
Benutzer
 
Registriert seit: 05.09.2010
Beiträge: 55
PHP-Kenntnisse:
Anfänger
Kikatzu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Error: Fatal error: Call to undefined function mime_content_type() in /home/www/server/hosting/k/a/kafei/htdocs/upload.php on line 151
__________________
Kikatzu ist offline  
Alt 22.11.2010, 18:59  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Siehe Antwort #6!
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 22.11.2010, 19:20  
Benutzer
 
Registriert seit: 05.09.2010
Beiträge: 55
PHP-Kenntnisse:
Anfänger
Kikatzu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Und toll das ich nur einen kleinen Zugriff habe auf meinen Space (Free Webspace).
__________________
Kikatzu ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] temp dateien vom upload script werden nicht auf dem server gespeichert. largo PHP Tipps 2010 10 26.07.2010 06:20
Upload eps dateien werden nicht hochgeladen paule28 PHP Tipps 2010 11 30.06.2010 15:14
Unvollständige Dateien nach FTP upload phreund PHP-Fortgeschrittene 2 27.01.2010 21:12
Problem beim Upload von Dateien per FTP ererbus PHP-Fortgeschrittene 4 11.06.2009 22:56
Upload unjd Dateien direkt umbennen HH.1987 PHP Tipps 2009 2 08.03.2009 12:14
Scriptsuche DRINGEND! Script zum Upload von Dateien melanie22 Scriptbörse 5 10.01.2009 23:26
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
Bitte um Hilfe - PHP upload mehrere Dateien ich_bin_es PHP Tipps 2008 5 18.07.2008 17:17
File Upload für dateien größer als 1GB b++ PHP Tipps 2006 14 08.02.2006 21:59
[Erledigt] Datei Upload! alle Dateien zulassen PHP Tipps 2004 8 08.11.2004 20:15
Upload von Dateien PHP Tipps 2004 10 16.09.2004 10:52
upload mehrere dateien chief-thomson PHP Tipps 2004 5 26.08.2004 17:00
Problem beim Upload mehrerer Dateien per Script PHP Tipps 2004 1 04.08.2004 16:26
Mimetyp bei upload von größeren Dateien PHP Tipps 2004 3 29.07.2004 11:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
upload verbieten, php upload dateien ausschließen, php upload php dateien verbieten, upload von bestimmten datentypen verbieten php, php upload dateitypen, php upload unterbinden, php datei upload gefährliche formate, php upload von html dokumenten, upload php dateien verbieten, upload dateiendung verbieten, php upload verbieten, http://www.php.de/php-einsteiger/74215-dateien-beim-upload-verbieten.html, thomson, beim upload namen ausschließen, welche dateitypen sollten beim upload verboten werden, php upload datentyp, php file upload datei ausschließen, datei upload verbieten, ajax upload php mime_content_type, php upload verbiete

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum