Što je SQL ubrizgavanje? [MakeUseOf objašnjava]

  • William Charles
  • 0
  • 1711
  • 243
Oglas

Svijet internetske sigurnosti zatrpava otvorenim portovima, stražnjim otvorenim otvorima, sigurnosnim rupama, trojancima, crvima, ranjivošću vatrozida i mnoštvom drugih problema koji nas svakodnevno drže na nogama. Za privatne korisnike izgleda da su virusi i crvi najgore mogućnosti. Ali za sve koji imaju bazu podataka, SQL injekcija je jedan od najrazornijih sigurnosnih nedostataka.

Baze podataka izuzetno su vrijedne u području računala. Oni su neophodni za spremanje podataka u memoriju i za prikaz različitih odnosa između podataka. Ovdje u MakeUseOf-u imamo brojne baze podataka posvećene različitim zadacima: jedna za sve naše članke, jedna za našu korisničku bazu, jedna za naš program nagrada i popis se nastavlja. Što se događa kada naše baze podataka zlonamjerno napadnu - ili čak unište?

Kada nemate stvarni pristup bazi podataka, SQL injekcija je jedan od najistaknutijih oblika napada. Nastavite čitati da naučite što je to točno i kako može biti tako opasno.

Što je SQL, u svakom slučaju?

Da biste razumjeli SQL injekciju, prvo morate razumjeti što je SQL i kako se odnosi na web mjesto. SQL, koji označava strukturirani upitni jezik, vrsta je programskog jezika optimiziranog za upravljanje tabličnim podacima. U svim namjerama i svrha programeri mogu komunicirati s bazom podataka i dati joj naredbe.

Kad god se postupa baza podataka, daju se i obrađuju SQL naredbe. Ako razmišljate o svim vremenima na kojima se postupa baza podataka, zaključit ćete da se ona događa samo u šačici okolnosti:

  • Kada se trebaju umetnuti novi podaci,
  • Kad se trenutni podaci trebaju promijeniti,
  • Kad se stari podaci trebaju izbrisati,
  • Kad se određeni dio podataka mora pretraživati ​​i dohvatiti.

Svaki put kad se mora dogoditi jedna od ovih radnji, SQL naredba se izvršava negdje na poslužitelju. Uglavnom, programer određuje kada se i gdje se te SQL naredbe pojavljuju u izvornom kodu. Međutim, postoje nezaobilazne okolnosti kada korisnik može natjerati na manipulaciju bazom podataka - a te su mogućnosti oko vas.

Jeste li se ikad prijavili na web mjesto? Jeste li ikad napisali komentar na članku bloga ili odgovor u niti na forumu? Jeste li ikad poslali Facebook poruku prijatelju? Upisali ste e-poštu u Gmail? Tražili ste web mjesto na Googleu? Svaki put kada na web mjestu vidite polje za unos (korisničko ime, lozinka, upit za pretraživanje, okvir za poruke itd.), Taj se tekst šalje u bazu podataka i postupa po njoj.

E sad, ako je zlobni korisnik htio dirati bazu podataka, za njega nema mnogo izbora. Jedna od mogućnosti bila bi stvarnost fizička pristup poslužitelju i uništi ga u njegovoj bazi. Ali u protivnom, ima najviše smisla zlonamjerni korisnik oteti postojeću SQL naredbu prilikom korištenja ulaznog polja i na taj način prisiliti poslužitelja na izvršavanje naredbe drugačije od prvobitno namijenjene.

SQL tehnika ubrizgavanja

Taj čin otmice postojeće SQL naredbe odnosi se na SQL injekciju. Zašto se to zove injekcija? Budući da otmica SQL naredbe zahtijeva od korisnika da unese svoj SQL kôd kada koristi polje za unos. Zvuči li to zbunjujuće? Dopustite da ilustriram primjerom.

Razmotrite stranicu za prijavu na MakeUseOf. Kad unesete svoje korisničko ime i lozinku i pritisnete “podnijeti“, forsirate web poslužitelj da generira SQL naredbu koja uključuje podatke koje ste upravo dali - to su vaše korisničko ime i zaporka. Baza podataka prima informacije, provjerava da je kombinacija korisničkog imena i zaporke ispravna, a zatim vam daje pravilan pristup ostalim područjima web mjesta.

Zamislite sada što bi se dogodilo ako zlonamerni korisnik ne upiše svoje korisničko ime i lozinku, već umjesto toga upiše SQL naredbu kao svoje korisničko ime? Ako poslužiteljski kôd nije pravilno zaštićen, baza će primiti neispravno korisničko ime (što je stvarno SQL naredba) i zapravo ga pokrenuti kao naredbu.

I zato se zove injekcija. Naredba SQL ubrizgava se u bazu podataka na potpuno legitiman način, manipulirajući tako da na kraju učini nešto što nije trebalo učiniti.

Napredni primjer

Do sada sam SQL injekciju opisivao izrazima na visokoj razini tako da je bilo tko razumio, pa i oni bez znanja o programiranju. U ovom ću dijelu dati stvarni primjer kako ova tehnika je moguća. Ako ste početnik SQL-a ili ako se nikad prije niste bavili programiranjem, možete mirno preskočiti ovaj odjeljak.

Prilikom prijave na web mjesto, evo mogućeg načina na koji je kôd mogao biti napisan u SQL-u:

SELECT user_id
OD korisnika_db
GDJE korisničko ime = "$ korisničko ime" I lozinka = "$ lozinka"

U osnovi, naredba traži od baze podataka da sve vrati user_ids sa stola users_db koji odgovaraju unesenoj kombinaciji korisničkog imena i lozinke. Izgleda sve fino i sjajno, u redu?

Pretpostavimo da su obrazac za prijavu dobili sljedeći ulazi:

Korisničko ime: David
Lozinka: fubar 'ILI' x '=' x

Primijetite da se polje lozinke ne započinje i ne završava apostrofom. Kad poslužitelj primi ovaj pokušaj prijave, uzet će sve što je dato u polju lozinke i staviti ga umjesto $ lozinke u kod. Rezultirajuća SQL naredba izgledat će ovako:

SELECT user_id
OD korisnika_db
GDJE korisničko ime = "David" I lozinka = 'fubar 'ILI' x '=' x'

Kada poslužitelj izvrši ovu naredbu, posljednji dio te SQL naredbe bit će stalno povratak istinit. To znači da bi zlonamerni korisnik mogao unijeti bilo koje korisničko ime i odmah dobiti pristup tom računu jer bi prijava radila bez obzira da li je ispravno dobio lozinku ili ne..

Naravno, prijava na nečiji račun prilično je blag prijestup kada ga uspoređujete sa svim ostalim mogućim pokušajima hakiranja: brisanjem cijelih baza podataka, prikrivanjem svih podataka ili čak krađa podaci u bazama podataka.

Profesionalni web programeri postaju sve bolji i bolji u sprečavanju takvih trikova, ali s vremena na vrijeme čut ćete da je tvrtka pretrpjela gubitak zbog napada SQL injekcijskog napada. Kad se to dogodi, sada znate što to znači i kako je to moguće.

Kreditna slika: Intro slika putem Shutterstock-a, shema baza podataka putem Shutterstock-a, HACKED via Shutterstock




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.