Kysy

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:


    SELECT uutisen_teksti, uutisen_kirjoittaja, uutisen_kirjoitusajankohta
    FROM uutiset
    WHERE id=123
    

    ..SQL-injection tarkoittaa sitä, että tuohon URL-osoitteeseen tungetaan kamaa, joka pyrkii suorittamaan muutakin kuin tuon em. jutun, esimerkiksi niin, että otetaan teksti:


    123; 
    DROP TABLE uutiset
    

    ...ja "escapoidaan" tuo tekstipätkä yhteen pötköön, karkeasti yksinkertaistaen niin, että osoite onkin:

    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:


    SELECT uutisen_teksti, uutisen_kirjoittaja, uutisen_kirjoitusajankohta
    FROM uutiset
    WHERE id=123;
    DROP TABLE uutiset
    

    ..eli ensin haetaan uutinen, kuten pitääkin, mutta seuraavana ajetaan taulun tipauttava komento (DROP). Puolipiste erottelee toisistaan erilliset SQL-lausekkeet kielessä toisistaan.

    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...

Suosituimmat aiheet

Lisää aiheita

Uusimmat tapahtumat palvelussa

Aktiivisimmat käyttäjät

Näytä koko lista