Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kyselyn parametrin tarkistus PDO:ssa

Macro [15.10.2011 16:40:48]

#

Terve

Sen tiedän, että jos tiedot annetaan kyselyyn execute-funktiolle arrayna, ne suodatetaan eikä SQL-injektioon ole mahdollisuutta. Mutta mitä jos jostain syystä tekeekin näin?

$kysely = $yhteys->prepare("CREATE DATABASE IF NOT EXISTS {$tietokanta}");
$kysely->execute();

Tarkistetaanko nytkin $tietokanta-muuttuja SQL-injektion varalta? Mitä eroa on, jos arvot annetaan jo prepare-funktiolla executen sijaan?

Metabolix [15.10.2011 16:48:05]

#

Ei tietenkään tarkisteta*, eihän PDO tuossa tilanteessa näe mitään muuttujaa vaan vain valmiin kyselyn. Jos tuollaiseen tapaan olisi mahdollista liittää automaattinen heittomerkkimagia, tuskinpa SQL-injektio-ongelmia näin paljon olisikaan.

*) Tietoja ei muutenkaan tarkisteta, vaan ne käsitellään turvalliseen muotoon. Tarkistaminen tarkoittaisi sitä, että tutkittaisiin syötteen sisältöä ja tuotettaisiin virheilmoitus, jos sisältö vaikuttaa vaaralliselta.

Sinänsä en keksi yhtään järkevää syytä, miksi käyttäjän syötettä edes pitäisi päästää CREATE DATABASE -lauseeseen, joten kysymyksesi lienee täysin hypoteettinen.

Grez [15.10.2011 17:02:30]

#

Metabolix kirjoitti:

Tarkistaminen tarkoittaisi sitä, että tutkittaisiin syötteen sisältöä ja tuotettaisiin virheilmoitus, jos sisältö vaikuttaa vaaralliselta.

Joka olisi muutenkin väärä lähtökohta. SQL-injektioiden sun muiden vaarojen torjumiseen käytetään käsittelyä ja tarkistamista käytetään tiedojen oikeamuotoisuuden yms. varmistamiseen sekä mahdollisesti eri käyttäjille näytettävän ja syötettävissä oelvan tiedon rajaamiseen.

Macro [15.10.2011 17:16:27]

#

Mutta lause kumminkin käsitellään SQL-injektion varalta, vai ei?

Metabolix [15.10.2011 17:20:00]

#

Ei. Kuten sanoin, PDO ei tuossa näe mitään muuttujia eikä siis voi mistään tietää, mitkä osat lauseesta ovat siinä tarkoituksella ja mitkä vahingossa.

Macro [15.10.2011 18:03:55]

#

Selvä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta