Move_uploaded_file vs file_put_contents – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Move_uploaded_file vs file_put_contents – PHP – Fórum – Programujte.comMove_uploaded_file vs file_put_contents – PHP – Fórum – Programujte.com

 

Facedown0
Newbie
10. 12. 2015   #1
-
0
-

Ahoj,

chtěl bych se zeptat, jaká rizika plynou při použití tohoto postupu:

file_put_contents(
    $filename,
    file_get_contents($_FILES['soubor']['tmp_name'])
);

Vím, že se má používat move_uploaded_file, ale stále jsem se nikde nedočetl jaké je riziko, pokud ho nepoužiji. Pokud tomu dobře rozumím z php.net, tak move_uploaded_file v sobě již obsahuje is_uploaded_file a kontroluje tak jen, jestli uživatel nějakým způsobem opravdu dal upload souboru. Ale co když to nebyl on? Jaké jsou rizika? Co se může stát?

A ještě jedna otázka - je bezpečné používat řešení následujího typu:

if(is_uploaded_file($_FILES['soubor']['tmp_name'])) {
	file_put_contents(
    	$filename,
    	file_get_contents($_FILES['soubor']['tmp_name'])
    );
}

Děkuji

Nahlásit jako SPAM
IP: 213.220.250.–
Kit+15
Guru
10. 12. 2015   #2
-
0
-

#1 Facedown
Největší riziko spočívá v tom, že útočník místo obrázku nahraje třeba PHP skript a pak si ho spustí s právy majitele webu. Celý web pak má jak na dlani a může si s ním dělat co chce včetně databáze.

Ten druhý skript problém nijak neřeší.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Facedown0
Newbie
10. 12. 2015   #3
-
0
-

#2 Kit
Správně řešení by obsahovalo kontrolu typu souboru a ten jsem záměrně vynechal, protože mě zajímají pouze uvedené funkce a rozdíly.

Nahlásit jako SPAM
IP: 213.220.250.–
Facedown0
Newbie
10. 12. 2015   #4
-
0
-

#2 Kit
Zkrátka a dobře, jaký je rozdíl mezi move_uploaded_file vs použitím is_uploaded_file s kombinací file_put_contents? A dále, co se stane, pokud is_uploaded_file nebo move_uploaded_file nepoužiju, ale soubor přesunu jiným způsobem? Co se může stát? Jaké na to existují vektory útoku? Ohrozí to nějak mou bezpečnost? Nebo to prostě jen slouží k tomu, abych zjistil jestli někdo nahrál soubor a toť vše?

Nahlásit jako SPAM
IP: 213.220.250.–
Kit+15
Guru
10. 12. 2015   #5
-
+1
-
Zajímavé

#4 Facedown
Rozdíl poznáš při uploadu většího souboru. Funkce move_uploaded_file() běží mimo pracovní prostor PHP a proto zvládne i třeba film.

Funkce file_put_contents() ukládá string, který se ti však musí vejít do paměti, což bývá v řádu desítek mega. Funkce is_uploaded_file() jen zjišťuje, jestli uvedený soubor byl právě nahrán.

Prostě používej funkci move_uploaded_file(), která je určena pro upload. Bude rychlejší a nebude tolik zatěžovat server, resp. nemusí ho zatížit vůbec, protože je to jen přejmenování souboru v adresáři.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Facedown0
Newbie
10. 12. 2015   #6
-
0
-

#5 Kit
To je dobré vědět, děkuju.

Nahlásit jako SPAM
IP: 213.220.250.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý