Autor Zpráva
Timy
Profil
Mám kód na upload obrázků na FTP. Zkráceně vypadá takhle:


if(isset($_POST["submit"]))

{
if(((directorySize($directory)/(1024*1024))<200))
{
if($_FILES["obrazek"]["type"]=="image/jpeg" || $_FILES["obrazek"]["type"]=="image/gif" || $_FILES["obrazek"]["type"]=="image/png")
{
if(($_FILES["obrazek"]["size"]/1024)<512)
{
if(move_uploaded_file($_FILES["obrazek"]["tmp_name"], $cesta.$sichr."-".$_FILES["obrazek"]["name"]))
{
echo "Obrázek se podařilo nahrát.";
}


Zdá se, že přes tenhle kód mi někdo na web protlačil PHP soubor s hotovou administrací, díky něhož se mohl procházet po celém mém webu. Dost dobře nevím, jak se mu to povedlo, takže prosím o radu, kde mám díru.
DFly
Profil
spis to vidim, na odchyceni hesla FTP nekde cestou po webu
nebo mas nejaky spyware v kompu, ktery odesila soubor z hesly FTP klienta (pravdepodobnejsi varianta)

co mas za FTP klienta?

o to vetsi duvd zacit konecne pouzivat SCP nebo FTPS
Timy
Profil
DFly
„spis to vidim, na odchyceni hesla FTP nekde cestou po webu“
Tuhle možnost prozatím neberu v úvahu, protože první PHP soubor se tomu človíčkovi povedlo dostat do složky, kam normálně ukládám uploadnuté obrázky z webu. Pochybuju, že to byla jen náhoda. A vzhledem k tomu, že jsem nechtěl psát nějaký kód pro výpis uploadnutých obrázků, nastavil jsem v .htacces Options +Indexes, takže dále předpokládám, že se k té stránce dostal přes Google.
aswd
Profil *
Tuhle možnost prozatím neberu v úvahu,
To bys v úvahu brát měl, mne se stalo to samé. Taky ve složce s obrázky a dokonce jeden obrázek nahradil souborem php se stejným názvem, akorat s koncovkou php. A přes upload formulář tobýt nemohlo, protože ten je v administraci pod heslem, kontroluje mime typy a navíc obrázek zobrazuje zprostřčedkovaně přes script, takže i kdyby to tam dostal, tak by to ale nebylo s koncovkou PHP.
Timy
Profil
Je jisté, že se tam ten PHP soubor nemohl skrze ten uploadovací skript dostat? Mám navíc vypnutý safe_mode.

Další důvod, proč si nemyslím, že by mi odchytil heslo je, že nevidím důvod, proč by tam nahrával tu PHP administraci (Total commander online…), když měl přístup k celému FTP.
djlj
Profil
Timy
Hodnotu, která je ve $_FILES["obrazek"]["type"], posílá prohlížeč, proto se dá i zfalšovat. Pro ověření, zda se jedná o obrázek, používej getimagesize.
Timy
Profil
djlj
Díky. Takže správně by to mělo být takhle?


if(isset($_POST["submit"]))

{
if(((directorySize($directory)/(1024*1024))<200))
{
/*if($_FILES["obrazek"]["type"]=="image/jpeg" || $_FILES["obrazek"]["type"]=="image/gif" || $_FILES["obrazek"]["type"]=="image/png")*/
if(getimagesize($_FILES["obrazek"]["tmp_name"]))
{
if(($_FILES["obrazek"]["size"]/1024)<512)
{
if(move_uploaded_file($_FILES["obrazek"]["tmp_name"], $cesta.$sichr."-".$_FILES["obrazek"]["name"]))
{
djlj
Profil
Timy
Protože chceš jen určité typy obrázků, tak bych to udělal takto:


if($typ=getimagesize($_FILES["obrazek"]["tmp_name"]) && ($typ[2]==1 || $typ[2]==2 || $typ[2]==3))
Timy
Profil
djlj
Dobře, děkuju :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0