Autor Zpráva
igor
Profil *
Zdrwim,

upload suborov mam rieseny cez move_uploaded_file, a pouzivam premenne $_FILES

$_FILES['subor']['tmp_name'];
$_FILES['subor']['name'];

Da sa to nejako obist, napriklad ze niekto do tych premennych zada index.php a uploadne vlastne subor z ROOTu.

ja som skusal a nepodarilo sa.
Hugo
Profil
Ne, move_uploaded_file handluje pouze ze soubory, ktere byly na server uploadovany. Navic mi neni jasne, jak chces uploadovat soubor z rootu.
galathas
Profil
Zdravim,

move_uploaded_file stejne jako is_uploaded_file kontroluji zdali byl soubor uploadovan skrze HTTP POST metodu, pokud ne, vrati FALSE. Z toho důvodu ti jakékoliv přiřazení do $_FILES nepomůže :-) Tahle kontrola probíhá právě proto, aby se částěčně zabránilo takovýmto útokům ( podotýkám jen ČÁSTEČNĚ ) :-)
jergus
Profil *
galathas ako sa teda move_uploaded_file da zneuzit? napis nejaky priklad
bone
Profil *
galathas mozes potvrdit svoje tvrdenie ?
Galathas
Profil *
Zdravim Jergus, zdravim bone !

...jedna z možností je simulovat http post požadavek na daný server "ručně", vytvořením celého libovolného požadavku a jeho odesláním pomocí fopen(),fput() ... nebo pomocí socketů. Je zde tedy jisté bezpečnostní riziko, které spočívá v podstrčení libovolného souboru (tzn. i sputitelného kódu) přes http post. Ackoliv se soubor bude tvářit např. jako jpeg, tak nebude, a pokud neprovedeš další kontroly, a nebudeš mít pečlivě nastaven server a php, tak ti žádná is_uploaded_file ani move_uploaded_file nepomůže, jsou to více méně pomocné funkce, ne funkce které něco kontrolují, natož pak něčemu zamezují... :-)

Mějte se fajn. A php zdar!
bone
Profil *
galathas:
podla mna staci ked adresaru , v ktorom bude ten nahraty subor, nastavim prava, aby sa tie subory nedali spustat. myslis ze to staci? dik za info
Galathas
Profil *
Zdravim bone!

určitě je to správná volba při uploadu. Poté je dobré zkontrolovat jestli je soubor skutečně tím čím se tváří být :-) Např. u jpegu je lepší než zkontrolovat exif, nebo dokonce jen příponu, která se dá snadno změnit, zkontrolovat přímo header, tak jak je uveden ve specifikaci :-) tj. otevřít soubor ( stačí první dva bajty ) a zkontrolovat jestli jsou rovny "FFD8" v šestnáctce, tohle je tzv. SOI (start of image), je to část hlavičky každého jpegu, nebo můžeš pro 99% bezpečnost zkontrolovat celý header podle specifikace :-) více např. na : http://www.obrador.com/essentialjpeg/headerinfo.htm , pak už skript jen tak snadno neoblafnou :-) leda že by byl kód vložen přímo do jpegu, což se ale dá snadno zkontrolovat, neb máš možnost přečíst si v hlavičce jpegu velikost obrázku (size,width,height) a zkontrolovat jestli to sedí...pak by útočník musel změnit i tyhle informace, což by se ale při zobrazení obrázku mohlo projevit...ale proč by to někdo dělal nevim :-))) tohle jsou spíš tak trochu rady pro paranoidního člověka :-) ale zabývám se bezpečností dat už nějaký čas, takže paranoik asi už jsem :-)

Každopádně pěkný den !
bone
Profil *
galathas: no jo, jenze ja potebuju nechat uploadovat uplne vsechny soubory, taky spustatelne subory ako napriklad php atd...
DJ Miky
Profil
bone
Nepovoloval bych upload PHP souborů, pokud ano, tak jen lidem, u kterých bezpečně vím, že toho nezneužijí. Někdo tam může nahrát třeba PHP soubor s obsahem:
<?php
echo file_get_contents('../index.php');
?>
A zjistí zdroják tvého index.php skriptu...
bone
Profil *
DJ Miky: sak zlozke v ktorej budu uploadovane subory zakazem vykonavanie scriptov... jednoduche nie? ak este niekto mate napad, tak uvitam . dik
djlj
Profil
DJ Miky
Stačí při stahování souboru posílat jinou hlavičku...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0