Verkkotunnus Sähköposti & Office Kotisivut WordPress Hosting VPS
Palaa
.com
$ 9.99 $ 26.99 /1. vuosi
.org
$ 7.99 $ 24.99 /1. vuosi
Palaa
Kirjaudu sisään
Ohjauspaneeli Webmail Website Builder Verkkokauppa File Manager WordPress

Mikä on SQL-injektio?

Lue esimerkkejä SQL-injektiosta ymmärtääksesi, miten SQL hyökkäys toimii

SQL (Structured Query Language) injektio on kyberhyökkäys, jonka avulla hakkeri voi nähdä sellaisia tietokannan tietoja, joihin he eivät muuten pääsisi käsiksi. Tiedot voivat olla arkaluonteisia, jos ne ovat esimerkiksi käyttäjien henkilökohtaisia tietoja.

Mitä hakkeri sitten tekee varastamillaan tiedoilla? Usein hakkeri poistaa tiedot tietokannasta tai muuttaa niitä aiheuttaakseen ongelmia. Joskus SQL-injektio kohdistetaan verkkosovelluksen palvelimeen sen toiminnan vaarantamiseksi.

Mihin SQL-injektio vaikuttaa?

SQL-injektio hyökkäyksistä kärsivät monet yritykset, jopa suuretkin yritykset. Jos yrityksesi joutuu SQL-injektio hyökkäyksen uhriksi, on sanomattakin selvää, että siitä voi olla paljon vahinkoa. Hyökkäyksen takia yrityksesi voi esimerkiksi menettää käyttäjien yksityisiä tietoja, mikä on huono asia yrityksesi maineelle. Tällainen tietojen vuotaminen on myös laitonta tietosuojalain perusteella. Siksi hyökkäyksiä kannattaakin ehdottomasti pyrkiä estämään ennaltaehkäisevillä toimenpiteillä.

SQL injektio esimerkki

SQL-injektio voi tapahtua esimerkiksi seuraavalla tavalla.

Oletetaan, että sinulla on verkkokauppa, jossa myyt muun muassa lenkkareita. Lenkkareille on oma kaupassa oma tuotekategoriansa. Verkkokauppaasi saapunut käyttäjä on kiinnostunut lenkkarien ostamisesta, joten hän napsauttaa Lenkkarit-kategoriaa, jolloin selain pyytää seuraavaa:

https://feikkisivu.fi/tuotteet?kategoria=lenkkarit

Verkkosovelluksesi tekee SQL-kyselyn, jolla se pyytää kyseisen kategorian olennaisia tietoja tietokannasta.

SQL-kysely näyttää todennäköisesti tältä:

Select * FROM tuotteet WHERE kategoria = ‘Lenkkarit’ AND released = 1

Tässä SQL-kysely pyytää tietokantaa palauttamaan tiedot tuotekategoriasta, eli tässä tapauksessa Lenkkarit-kategoriasta.

Released = 1 on rajoitus, joka piilottaa tuotteet, joita ei ole vielä julkaistu. Jos sinulla on esimerkiksi muita lenkkareita, jotka haluat julkaista myöhemmin tulevaisuudessa, koodin numero 1 varmistaa, että ne eivät ole nähtävillä julkisesti.

Verkkosovelluksellasi ei välttämättä ole mitään keinoa suojautua SQL-injektiota vastaan. Hyökkääjä voi hyökätä esimerkiksi tällä tavalla:

https://feikkisivu.fi/tuotteet?kategoria=lenkkarit’–

Tällöin SQL kysely näyttää tältä:

Select * FROM tuotteet WHERE kategoria = ‘Lenkkarit’–‘ AND released = 1

Kaksoisviiva ilmaisee, että kysely on kommentti, ja jos järjestelmä uskoo kyselyn olevan kommentti, se ei voi tietää, että kyseessä on hyökkäys. Myöhemmin kaksoisviiva poistaa loput kyselystä (AND released = 1), mikä puolestaan julkaisee tiedot kaikista kategoriasi tuotteista. Jopa niistä, joita ei ole vielä julkistettu.

Lisäksi hyökkääjä voi tehdä SQL-hyökkäyksen nähdäkseen kaiken muunkin, mitä myyt verkkokauppasi muissa kategorioissa. 

Hakkeri hyökkää tällä tavalla:

https://feikkisivu.fi/tuotteet?kategoria=lenkkarit’+OR+1=1–

Tämä johtaa SQL kyselyyn, joka näyttää tältä: 

Select * FROM tuotteet WHERE kategoria = ‘Lenkkarit’ OR 1=1–’ AND released = 1

Tämä kysely palauttaa tiedot kaikista verkkokauppasi tuotteista.

On myös olemassa myös monia muita tapoja, joilla hakkeri voi tehdä SQL-injektion: seuraavaksi kerromme lisää niistä. 

  • Boolean

Hyökkääjä lähettää SQL-kyselyn palauttaakseen tuloksen tietokannasta nopeasti. Käyttämällä Boolean-menetelmää hyökkääjä voi määrittää, oliko palautettu tulos tosi vai epätosi.

  • Aikaviive

Hyökkääjä lähettää kyselyn saadakseen tietokannan odottamaan, mikä aiheuttaa aikaviiveen. Tällä menetelmällä hyökkääjä voi selvittää, onko lähetetty kysely tosi vai epätosi sen perusteella, kuinka kauan tietokannalla kestää vastata.

  • Kaistan ulkopuolinen verkko

Hyökkääjä voi tehdä kaistan ulkopuolisen hyökkäyksen, jos tietokannan käyttämässä palvelimessa on tiettyjä ominaisuuksia. Hyökkääjä saa tietoja kaistan ulkopuolisen kanavan kautta ja sijoittaa ne muualle. Tämäntyyppinen hyökkäys onnistuu, jos palvelin luo DNS- tai HTTP-pyynnön siirtääkseen yksityiset tiedot hyökkääjälle.

SQL injektio hyökkäys

Yleisimmät SQL-injektiot hyödyntävät tietokantakyselyn WHERE-lauseketta. Hyökkäys voi kuitenkin tapahtua muillakin tavoilla.

Miten estää SQL injektio hyökkäys?

Suurin osa SQL-injektiolle alttiista haavoittuvuuksista on onneksi helppo löytää.

  • Haavoittuvuustarkistus

Käytä Burp Suite’s -haavoittuvuustarkistusta. Voit käyttää tätä työkalua määrittämällä testejä sovelluksen jokaiselle sisäänpääsypisteelle.

Voit etsiä virheitä, järjestelmällisiä eroja ja saamiasi sovellusvastauksia.

  • Syötteen validointi ja WAF

Kirjoita koodi, joka tunnistaa epäluotettavat käyttäjät. Tämä ei kuitenkaan ole vedenpitävä menetelmä yksinään käytettynä. Se voi luoda paljon vääriä positiivisia tuloksia. Tämän menetelmän käyttäminen samalla, kun käytössä on myös WAF, voi olla tehokasta. WAF suodattaa pois SQLI:n ja muut verkkouhat.

Kun WAF saa vihjeen laittomasta käyttäjästä, se tarkistaa IP-tiedot ennen pyyntöön vastaamista. Jos IP -tiedoilla on huono maine, käyttäjä estetään.

Toivomme, että tämä artikkeli on auttanut sinua suojautumaan SQL-injektioilta.