is_uploaded_file

is_uploaded_file -- Prüft, ob die Datei mittels HTTP POST upgeloaded wurde

Beschreibung

bool is_uploaded_file ( string filename)

Gibt TRUE zurück , wenn die Datei filename mittels HTTP POST upgeloaded wurde . Das ist hilfreich sicherzustellen , dass kein böswilliger User versucht hat das Script zu überlisten , indem er es Dateien bearbeiten lässt , die es gar nicht bearbeiten sollte . Zum Beispiel / etc / passwd .

Diese Prüfung ist speziell dort interessant , wo irgendeine Aktion mit upgeloadeten Dateien deren Inhalt dem User zugänglich machen könnte ( oder auch anderen Usern auf dem selben System ) .

is_uploaded_file( ) ist in PHP 3 nur nach Version 3.0.16 , und in PHP 4 nur nach Version 4.0.2 verfügbar . Sollten Sie eine frühere Version benutzen , können Sie sich mit der folgenden Funktion weiterhelfen :

Anmerkung : Das folgende Beispiel funktioniert nicht in Versionen nach PHP 4.0.2 . Das liegt an der internen Funktionalität von PHP , welche sich nach dieser Version geändert hat .

 
?php

 
/

 
*

 
Userland

 
Test

 
für

 
hochgeladene

 
Datei

 
.

 
*

 
/

 
function

 
is_uploaded_file(

 
$filename

 
)

 
{

 
if

 
(!$tmp_file

 
=

 
get_cfg_var('upload_tmp_dir')

 
)

 
{

 
$tmp_file

 
=

 
dirname(tempnam(''

 
,

 
''))

 
;

 
    }

 
$tmp_file

 
.=

 
'

 
/

 
'

 
.

 
basename($filename)

 
;

 
/

 
*

 
Der

 
Benutzer

 
könnte

 
einen

 
führenden

 
Slash

 
in

 
php.ini

 
haben..

 
.

 
*

 
/

 
return

 
(ereg_replace('

 
/

 
+'

 
,

 
'

 
/

 
'

 
,

 
$tmp_file

 
)

 
==

 
$filename)

 
;

 
}

 
/

 
*

 
So

 
verwenden

 
Sie

 
sie

 
,

 
nachdem

 
Sie

 
in

 
diesen

 
älteren

 
*

 
Versionen

 
auch

 
keine

 
move_uploaded_file(

 
)

 
haben

 
:

 
*

 
/

 
if

 
(is_uploaded_file($HTTP_POST_FILES['userfile'])

 
)

 
{

 
copy($HTTP_POST_FILES['userfile']

 
,

 
"

 
/

 
place

 
/

 
to

 
/

 
put

 
/

 
uploaded

 
/

 
file")

 
;

 
}

 
else

 
{

 
echo

 
"Mögliche

 
Dateiupload-Attacke

 
:




 
Dateiname

 
'

 
$HTTP_POST_FILES[userfile]'

 
."

 
;

 
}

 
?





Siehe auch move_uploaded_file( ) , und das Kapitel Steuerung von Dateiuploads für ein einfaches Anwendungsbeispiel .