Heips
Testailen tässä verkkokauppasovellustani mysql-injektion varalta. Olen tehnyt yhden kohdan sinne tarkoituksella hieman huolimattomasti, laitoin debuggitulosteet querystä jonka PHP-koodini saa ja sitten myslin antamasta errorista.
Got Query: SELECT * FROM netshop WHERE maingroup = '1' AND subgroup = '9'; DROP TABLE `lolled`; SELECT * FROM netshop WHERE 't' = 't'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE `lolled`; SELECT * FROM netshop WHERE 't' = 't'' at line 1
PHPKoodista ote
<?php $qr = "SELECT * FROM netshop WHERE maingroup = '{$main}' AND subgroup = '{$sub}'"; $ret = mysql_query($qr); echo "Got Query: " .$qr ."<br><br>"; die(mysql_error()); ?>
Main ja sub saadaan ihan seuraavasti Getillä
<?php $main = $_GET['maingroup']; $sub = $_GET['subgroup']; ?>
Minkätakia mysli antaa kyseisen virheen vaikka query on kuitenkin validi?
koitin ajaa suoraan kantaan kyseisen queryn ja toimi loistavasti.
Kyseinen dropattava lolled taulu löytyy taas kannasta.
Edit: Urliin syötän tiedot näin http://osoite.com/netshop/index.php?maingroup=1
Edit2: Sinänsä tämähän ei haittaa vaikka ei toimikkaan, mutta ihan nyt mielenkiinnosta mietin että miksi ilmoittaa virheestä.
Käsittääkseni mysql_query():lle ei voi antaa kuin yhden queryn kerrallaan.
Näinhän tuo näyttäisi olevan, kas kun en itse tajunnutkaan.
Pelkästään SQL-injektio nimellä kulkee.
Aihe on jo aika vanha, joten et voi enää vastata siihen.