Ja sivulla on lomake, ja vierailija voi hakea tietokannasta (MySQL) tiestoa syöttämällä lomakkeeseen hakusanoja.
Mitä kaikkea tuolle input-kentästä saadulle datalle pitää tehdä, ennen kuin sen uskaltaa laittaa SQL-lauseen sisään?
Mitä kaikkea tuolle input-kentästä saadulle datalle pitää tehdä, ennen kuin sen uskaltaa laittaa SQL-lauseen sisään?
Vastaukset 1
Vanhimmat
Hyvään ohjelmointitapaan kuuluu määritellä aina kaikki sallitut merkit eksplisiittisesti ja poistaa kaikki muut merkit. Säännölliset lausekkeet on tässä tapauksessa melkein pakko osata.
Esimerkiksi:
$sukunimi = preg_replace('/[\w\-\. ]/i', '', $_POST['sukunimi']);
Tämän jälkeen merkkijonot pitää vielä eskapettaa tietokannanhallintajärjestelmän omilla funktioilla, esimerkiksi MySQL:n tapauksessa tämä olisi oikeaoppisin tapa:
if (get_magic_quotes_gpc())
$sukunimi = stripslashes($sukunimi);
$sukunimi = "'" . mysql_real_escape_string($sukunimi) . "'";
Nuo rutiinit kannattaa tietysti kirjoittaa funktioon tai luokan metodiin, jolloin niitä ei tarvitse kirjoittaa uudelleen jokaisen kentän kohdalla.