Шта је СКЛ ињекција?

Једна од највећих класа веб рањивости позната је као „СКЛ Ињецтион“ или СКЛи. Језик структурираних упита, звани СКЛ, је језик који се користи за интеракцију са већином база података, иако се користе бројне варијанте језика у зависности од базе података платформа. Свака веб локација која чува корисничке податке, као што су информације о налогу, или пружа функцију отпремања корисника, као што је веб локација за хостовање слика, користиће базу података за складиштење тих података.

Савет: СКЛ се генерално изговара или „есс цуе елл“ или „секуел“, при чему је прва опција чешћа у британском енглеском, а друга преовлађујућа у америчком енглеском. Оба изговора се генерално разумеју у контексту разговора о базама података.

Шта је СКЛи?

СКЛи је рањивост где веб програмери који дизајнирају код који комуницира између веб сервер и база података не примењују заштиту од СКЛ команди које шаље а корисник. Проблем је у томе што је могуће побећи из изјава базе података и додати нове аргументе или потпуно нову изјаву. Промењени или други израз базе података може да изврши низ радњи укључујући потенцијално велика брисања или цурење података.

Експлоатације се обично врте око тога да постојеће изјаве буду истините у свим околностима или да обезбеде другу групну команду која изводи одређену радњу као што је брисање или приказивање свих података. На пример, СКЛ изјава за пријаву на веб локацију може да провери да ли се достављено корисничко име и лозинка подударају са уносом у бази података. Да бисте покушали да приступите искоришћавању СКЛ-а, можете покушати да додате клаузулу „или тачно“ као што је „или 1=1“. Ово би направило команду дуж реда „пријавите се са [овим] корисничким именом, ако је лозинка [ова], или је ова изјава тачна“.

Како спречити СКЛи

СКЛи је некада био веома уобичајен начин на који веб-сајтови проваљују базу података, а затим процуре на мрежи. Због заједничких напора да се осигура да свест о безбедности буде део обуке програмера, ова класа рањивости је углавном решена и ретко се више виђа.

Исправан метод за спречавање СКЛи-а је коришћење припремљених израза, такође познатих као параметризовани упити. Традиционално, СКЛ наредбе се декларишу и уносе корисничких података спојених у њих током те декларације. Са припремљеним изјавама, команда базе података се исписује, а затим функција сперате покреће команду и убацује корисничке податке. Иако ово може изгледати као мала разлика, она потпуно мења начин на који се рукује командом. Разлика спречава покретање било каквих значајних СКЛ команди и третира сав кориснички унос као стринг, спречавајући да се догоди СКЛ ињекција.