-
mitä SQL-injektio tarkoittaa?
2 vastausta
-
Käytännössä kaikki isommat verkkosivut on toteutettu niin, että varsinaisesti sivuille näkyviin tuleva tieto (uutisen teksti, keskustelualueiden keskustelut, jne) haetaan www-palvelimeen yhteydessä olevasta tietokannasta.
Tietokannat käyttävät yleisesti komento-/kyselykieltä, jota kutsutaan SQL:ksi.
Jos verkkosivun osoite on vaikkapa:
httx://www.jokusivu.xx/uutinen?id=123
...yleensäottaen tuo 123 kertoo palvelulle sen, mikä uutinen haetaan tietokannasta ja näytetään käyttäjälle. Tämä tehdään SQL:lla, eli kun lataat tuon em. osoitteen, tietokantaan tehdään palvelimella kysely, joka saattaisi mennä about näin:
..SQL-injection tarkoittaa sitä, että tuohon URL-osoitteeseen tungetaan kamaa, joka pyrkii suorittamaan muutakin kuin tuon em. jutun, esimerkiksi niin, että otetaan teksti:SELECT uutisen_teksti, uutisen_kirjoittaja, uutisen_kirjoitusajankohta FROM uutiset WHERE id=123
...ja "escapoidaan" tuo tekstipätkä yhteen pötköön, karkeasti yksinkertaistaen niin, että osoite onkin:123; DROP TABLE uutiset
httx://www.jokusivu.xx/uutinen?id=123;DROP%20TABLE%20uutiset
Nyt, jos verkkosivusto on huolimattomasti tehty, tuota id:tä ei tarkisteta mitenkään, vaan se vain heitetään sellaisenaan osaksi tuota ensimmäistä SQL-kyselyä. Tällöin ajetaan myös puolipisteen jälkeinen koodi, joka tuhoaa koko uutiset -tietokantataulun, sisältöineen päivineen. Eli siellä ajetaan koodi:
..eli ensin haetaan uutinen, kuten pitääkin, mutta seuraavana ajetaan taulun tipauttava komento (DROP). Puolipiste erottelee toisistaan erilliset SQL-lausekkeet kielessä toisistaan.SELECT uutisen_teksti, uutisen_kirjoittaja, uutisen_kirjoitusajankohta FROM uutiset WHERE id=123; DROP TABLE uutiset
Koskapa laajat verkkosivustot koostuvat yleensä tuhansista, ellei kymmenistä tuhansista eri sivuista, jää noita edellämainitun kaltaisia "aukkoja" aina aika ajoin, vaikka miten tarkkaan koodia testattaisiin.
Ja tuosta yksinkertaisimmillaan SQL-injectionissa on kyse. Aiheesta kertova Wikipedian artikkeli valaisee aihetta varmaan vielä paremminkin. -
http://fi.wikipedia.org/wiki/SQL-injektio
suoraan googlesta, hei haloo...
Vastaa kysymykseen
Huom! Ethän vastaa pelkällä linkillä. Vaikka vastaus kysymykseen löytyisikin linkin takaa, tiivistä sen sisältö tähän, jotta lukijan ei tarvitse siirtyä toiseen palveluun saadakseen tarkan vastauksen kysymykseensä.