Portál AbcLinuxu, 10. května 2025 12:38
Tu som v noci položil dotaz na ktorý som si sám odpovedal a popri tom tam padla zmienka o injection http://www.abclinuxu.cz/poradna/databaze/show/273394
Ja som skúšal všetko možné, ale nepodarilo sa mi tabulku ani zmazať ani vyprázdniť údaje, alebo vytvoriť novú, v dotaze je aj časť kódu, ktorá sa spustí, keď máte nejaký tovar v košíku a niektorú s položiek v košíku chcete vymazať, takže najprv si do košíka niečo vložte a potom kliknite na "Objednať", alebo "Zobraz košík", zobrazí sa košík kliknite na "Vymaž položku" a spustí sa časť kódu čo je v dotaze, pokiaľ by niekto chcel vidieť celý kód, kľudne ho poskytnem aj tak som ho robil pod GNU GPL.
Podľa mňa sa tam injection nedá dať, pretože sa nedá vykorčuľovať medzi tími úvodzovkami bez chyby, takže sa kód nevykoná, ale uvítam každú radu a smeknem klobúk pred tím čo mi vysvetlí že to ide nainfikovať, pokiaľ nie tak budem ďaľej žiť v tom že stačí dať úvodzovky do apostrofov a je všetko OK.
Info: Je to free hosting niekedy ide v poho, ale váčšinou čo u mňa ide 1s tam 10 až 30 (dnes náhodou fičal výborne), práva sú všetky povolené, lebo meniť sa nedajú :)
Thanks for hack.
A proc to pises takto podivne, a ne tak jak se to ma psat
kdyz to napises podle toho jako to pisou v manualu: http://cz2.php.net/mysql_query
Konkretne cast:
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname)
);
Tedy neco jako:
$query = sprintf('DELETE FROM Kosik WHERE Id='%s' AND
Kod_tovaru='%s'',
mysql_real_escape_string(
$_GET[id]),
mysql_real_escape_string(
$_GET[kod_tovaru]
);
$vysledok = mysql_query($query);
Tak uz se sql-injection nemusis bat
/* create a prepared statement */ if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) { /* bind parameters for markers */ mysqli_stmt_bind_param($stmt, "s", $city); /* execute query */ mysqli_stmt_execute($stmt); /* bind result variables */ mysqli_stmt_bind_result($stmt, $district); /* fetch value */ mysqli_stmt_fetch($stmt); printf("%s is in district %s\n", $city, $district); /* close statement */ mysqli_stmt_close($stmt); }Pak se opravdu nemusí SQL injection bát, ani se nemusí bát vícenásobného escapování.
Dík za radu a zabudol som uviesť kde to testujem http://vmshoping.yw.sk/
A ja zil v domoni, ze to co pisou v manualu je sprave, a ono prd.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.