Opakované útoky na web

Dobrý den, mám problémy stím že na moji hlavní stránku jsou ukládány viry i po změně hesla. V mám index.html není žádny vir! a přesto zhruba po měsíci mi a ostatním kamarádům hlásí antivir nákazu v html kodu. Moje stránky jsou ymer.xf.cz

Děkuji za odpovědi administrátorů webu

//Edit: Nekřič na nás a piš názvy témat malými písmeny. Thalia
Já tedy nejsem administrátor webu (když nepočítám ty své), hacker ani žádný velký programátor, ale není to:

http://ymer.xf.cz/upload/ss.php

bezpečnostní díra jako vrata od stodoly?
Jan: tak jsem neodolal a toho hackera jsem si zahrál. Měl jsem špatné svědomí z toho předchozího příspěvku a tak jsem si dovolil smazat soubor upload.php.
Na disku je jeho kopie
A jak mam pozměnit ten php soubor aby tam nebyla ta díra?
V celém php kódu nevidím nic, co by zajistilo jakousi ochranu proti nahrání skriptu, viru nebo čekoholi jiného..

Základem všeho (jako primitivní ochrana) je nedovolit serveru zpracovat jakýkoliv soubor, který uživatel/návštěvník nahraje - buď přejmenováním do takového stavu, že jej nezpracuje php parser nebo úplným zrušením parsování všech souborů v určitém adresáři (coč teď nevím z hlavy, jestli apache s htaccess zvládne).
___
Sice to pořádně nefunguje, ale hlavně že máš v tom skriptu copyright ;)

Pro zajímavost, php kód tvého uploadu lze zobrazit například zde http://www.ymer.xf.cz/upload/test0.php ;) -- ale předkpokládám, že ds předtím provedl identickou věc.
A zrušení ukládání php souborů na script by nepomohl?
Určitě pomohl, ale..

1) musíš ošetřit všechny možné přípony souboru (php,php3,.. vlastně všechny povolené) - pokud se nepletu, tak apache je předává parseru jenom na základě přípon (extension).
2) kromě zablokování php skriptů musíš zablokovat všechno ostatní, co lze spouštět nebo může jinak ovlivnit běh serveru - všechny konfigurační soubory (.htaccess,..) apod.. (v případě serverů s podporou pro více skriptovacích jazyků než php bys musel ošetřit ještě skripty pro ně).
3) stále to není přiliš efektivní řešení..

Pokud něco jako "veřejný upload" přesto chceš na stránkách provozovat, doporučím ještě dávat odkazy na soubor přes směrovací/downloadovací skript, který bude vybraný soubor (v parameteru, například číslo jako identifikátor souboru - musíš někde ukládát, například v databázi nebo v jiném souboru) nabídne ke stažení s pomocí readfile (http://cz2.php.net/readfile). A umístění skutečných souborů zabezpečit proti přístupu zvěnčí (například .htaccess a .htpasswd)..
Zkus dát do adresáře upload soubor .htaccess, ve kterém bude řádek
php_flag engine off
Také by bylo potřeba ošetřit aby tam nebylo možné .htaccess nahrát.
A vůbec by bylo dobré povolit nahrávání jen určitých, přesně definovaných, typů souborů. Nechat si nahrávat na web libovolné soubory je sebevražda, nehledě na to, že toto je "pochybná akce" i vzhledem k hostingu.
Ještě podotknu (k tomu, co psal ds), že typ souboru by se primárně měl určovat podle mime-type, nikoli podle koncovky/přípony ;) -- přestože třeba apache je ukázkou opaku..

ds: Díky za doplnění php_flagu.. tenhle si z hlavy fakt nepamatuju :)
a nahrávané soubory by se asi měly filtrovat pomocí:
$_FILES["jmeno_souboru"]["type"]

PS: a výsledek by neměl vést ke skladišti souborů, na které vypadá pokus kolegy Jana