Command Palette

Search for a command to run...

Sanasto SQL Injection (SQLi)

Mikä on SQL-injektio (SQLi)?

SQL-injektio (SQLi) on hyökkäystyyppi, jossa hyökkääjät syöttävät haitallisen SQL-lauseen syötekenttään manipuloidakseen tietokantaa.

Tämä hyökkäys kohdistuu sovelluksiin, jotka eivät käsittele asianmukaisesti validointia ja käyttäjän syötettä, mahdollistaen luvattoman pääsyn arkaluonteisiin tietoihin, kuten salasanoihin tai luottokorttitietoihin jne.

Miten SQL-injektio toimii

Kun sovellus sisällyttää suoraan käyttäjän syötteen tietokantakyselyyn ilman asianmukaista validointia, hyökkääjät voivat muokata kyselyn toimintaa syöttämällä haitallisen SQL-lauseen.

Esimerkiksi:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Hyökkääjä voisi syöttää:

' OR '1'='1

Johtaen seuraavaan:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

Tämä palauttaa aina true, mahdollistaen luvattoman pääsyn.

Miksi SQL-injektio on tärkeä kyberturvallisuudessa

SQL-injektio on kyberturvallisuuden vaarallisin ja vanhin tekniikka. Tämä hyökkäystyyppi on jatkuvasti listattu OWASP Top 10:ssä.

Jopa pienet haavoittuvuudet mahdollistavat hyökkääjän:

  • Pääsy, muokkaus tai tietojen poistaminen
  • Autentikoinnin ohittaminen
  • Hallinnollisten toimintojen suorittaminen tietokannassa.
  • Järjestelmän täydellinen vaarantaminen.

Yleiset SQL-injektiotyypit

  • Klassinen SQLi: Suora injektio verkkolomakkeiden tai URL-parametrien kautta.
  • Sokea SQLi: Hyökkääjät päättelevät tietokannan tietoja epäsuorasti (esim. virheilmoitusten tai vasteajan kautta).
  • Union-pohjainen SQLi: Käyttää UNION-operaattoria yhdistääkseen tuloksia useista kyselyistä.
  • Virhepohjainen SQLi: Perustuu tietokannan virheilmoituksiin tietojen saamiseksi.
  • Aikapohjainen sokea SQLi: Hyödyntää palvelimen vasteviiveitä arvatakseen kyselyn tuloksia.

Kuinka estää SQL-injektio

1. Käytä parametrisoituja kyselyitä (valmistellut lauseet)

Varmista, että SQL-komennot käsittelevät käyttäjän syötettä datana, ei suoritettavana koodina.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Syötteen validointi ja puhdistus

Validoi kaikki käyttäjien syötteet, sallien vain odotetut merkit.

3. Käytä ORM-kehyksiä

Kehykset kuten Prisma, Hibernate jne. vähentävät suoraa SQL-käsittelyä.

4. Vähimmän oikeuden periaate

Rajoita käyttäjän oikeuksia, anna vain tarvittavat oikeudet.

5. Säännöllinen turvallisuustestaus

Käytä sovellusten tietoturvatestaustyökaluja, kuten SAST, DAST tai IAST, havaitaksesi injektiohaavoittuvuudet aikaisessa vaiheessa.

Esimerkki tosielämästä

Verkkokauppasivusto kärsi tietomurrosta, jossa hyökkääjät käyttivät SQL-injektiota kirjautumislomakkeessa saadakseen luottokorttitietoja tietokannasta.

Liittyvät termit

Seuraavat askeleet

Valmis turvaamaan sovelluksesi? Valitse polkusi eteenpäin.

Liity yli 500 yritykseen, jotka jo turvaavat sovelluksensa Plexicuksen avulla

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready