Autor Zpráva
r0me0
Profil
Zdravím, mám problém, který se mi stal už podruhé. Zničeho nic se mi smazalo asi 100 řádků v jedné tabulce. Psal jsem borcům na hosting a ti mi napsali, že:
a) na webu se nachazi nejaky zaskodnicky skript ktery muze databaze mazat
b) pristupove hesla mohly byt prozrazeny
c) v php je nekde chyba ktera muze mazat databazi v urcitem pripade

Podle mě to heslem nebude, to by ten někdo smazal celou databázi, nebo aspoň celou tabulku. Nedovedu si představit, že bych měl takovou chybu v php, že by mi to mazalo 95% obsahu tabulky a ještě navíc když s tím webem nikdo nic nedělal.

Navíc se mi tam objevily nějaké podivné otazníky místo těch červených křížů, které slouží ke smazání jednoho řádku tabulky ( http://img230.imageshack.us/my.php?image=dbwe5.jpg ) to prý může být tím, že používám nějaké starší příkazy (používám mysql_query, změním to na mysqli )

Takže se chci zeptat, jestli se to už někomu nestalo, nebo popř. co s tím záškodnickým skriptem? Smazat celý obsah FTP a nahrát to tam znova a změnit hesla? Díky za pomoc.
WertriK
Profil
- změnil bych hesla - za to nic nedáš (snad)
- pokud to nezabere - je chyba ve scriptu nebo na straně hostingu
- zkusil bych script nahrát na jiný server a to rozhodne o tom kde je zakopaný hund

- pro informaci tohle provozuješ na jakém hostingu ?

PS: Mysql_Query() je starší příkaz ? Neumím si představit že by se měl někdy tento příkaz zrušit, možná za hodně dlouho.
nightfish
Profil
ad místo křížků otazníky - imho nemáš v tabulce definovaný primární klíč...
ad zbytek - podívej se na všechna "DELETE" ve všech skriptech - buď tam někde bude chyba a nebo je problém v něčem jiném
Kajman_
Profil *
A zvláštní pozornost věnovat sql dotazům, kde se maže z té tabulky... kouknout, jestli je ošetřené, aby mohl mazat jen ten, co k tomu má oprávnění a zkontrolovat, zda je to ošetřené na sql injection.
krteczek
Profil
to bude nejspíš klasika:
//používáte:
$dotaz = "SELECT * FROM tabulka WHERE id='$_GET[sloupec]'";
//místo lepšího (s přetypováním na integer, pokud je posíláno id položky)
$dotaz = "SELECT * FROM tabulka WHERE id = " . (int)$_GET[sloupec] . " ";

//nebo,pokud má být vstupem třeba text tak použít funkci k tomu určenou (a vyple magic_quotes_gpc!):
//předpokládám že už je vytvořeno připojení k db a také nastavená kodová stránka pro toto připojení 
$text =  mysql_real_escape_string($_POST['text']);
$nazev =  mysql_real_escape_string($_POST['nazev']);
$dotaz = "INSERT  INTO `tabulka` (`nazev`,`text`) VALUES ('" . $nazev . "', '" . $textUloz . "')";

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