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öttökenttään manipuloidakseen tietokantaa.

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

Kuinka SQL-injektio toimii

Kun sovellus sisällyttää käyttäjän syötteen suoraan 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 totta, mahdollistaen luvattoman pääsyn.

Miksi SQL-injektio on tärkeä kyberturvallisuudessa

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

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

  • Pääsy, muokkaus tai poistaminen dataa
  • Autentikoinnin ohittaminen
  • Hallinnollisten toimintojen suorittaminen tietokannassa.
  • Järjestelmän kokonaisvaltainen 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 tulokset useista kyselyistä.
  • Virhepohjainen SQLi : Perustuu tietokannan virheilmoituksiin tiedon keräämiseksi.
  • Aikapohjainen sokea SQLi : Hyödyntää palvelimen vasteviiveitä arvaten 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ötteenä dataa, ei suoritettavaa koodia.

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

2. Syötteen validointi ja puhdistus

Validoi kaikki käyttäjiltä tuleva syöte, 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äisoikeusperiaate

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 injektiovirheet varhaisessa 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