Klaida bus tavo kode kažkur. Čia ne injekcija

eval() spėju irgi niekur nedarai, todėl drįstu teigti, kad ne dėl to nusisiuntė tie email'ai (jeigu apskritai nusisiuntė). Rodyk kodą, ieškosim bug'ų.
Visi taip šneka apie tą injekciją, kartais atrodo kad net nežinodami kas tai yra. Tai galimybė nusiųsti tokią HTTP užklausą serveriui, kad galima būtų pakeisti konstruojamą SQL užklausą ir tokiu būdu išgauti arba įrašyti duomenis, kartais galima užuploadinti failą ir t.t., bet tai niekaip nesusiję su tavo situacija. Jeigu
visas tekstas, įrašytas į inputą išsisaugojo tau į lentelę - injekcijos neįvyko.
Paprasčiausia injekcija. Pavyzdžiui PHP kodas:
$id = $_GET['id'];
mysql_query("SELECT * FROM news WHERE id = '$id' ");
kintamasis neišescape'intas, simbolis
' lieka toks pat, todėl galima pakeisti konstruojama užklausą, padavus tam tikrą id parametrą. Pavyzdžiui:
?id=
1' OR '1'='1Tada PHP įstačius kintamąjį, tavo užklausa atrodys
SELECT * FROM news WHERE id = '
1' OR '1'='1'
Kas gražins visus rezultatus, o ne tik su reikiamu id. Tada galima apjunginėt lenteles, vietoj naujienos pavadinimo ištraukti pavyzdžiui user'io, kurio vardas `admin` slaptažodžio hash'ą, bandyti naudoti blind injection ir t.t.
Kai padarai escape'ą, simbolis
' pakeičiamas į
\', kad užklausa įvyktų sklandžiai. Jeigu auksčiau aprašytu atveju $_GET['id'] būtų išescape'intas, tai užklausa atrodytų
SELECT * FROM news WHERE id = '1\' OR \'1\'=\'1'
ir tiesiog pasakytų, kad tokio įrašo nėra.
Čia aišku pats paprasčiausias variantas, jų yra daug skirtingų ir daug sudėtingesniu
