Si mund të mbrohemi nga SQL Injection

Nga Wikipedia, enciklopedia e lirë

Mbrojtja ndaj SQL Injection është temë majftë aktuale pasi sulmet janë shumë të shpeshta. SQL injektimi është forma më e zakonshme e sulmimit të ueb faqeve pasi krijuesit e tyre lënë shumë hapësira. Prandaj është shumë e lehtë per sulmuesin që të gjejë pikat e dobëta në aplikacion dhe e kanë akoma më të lehtë që të manipulojnë dhe të vjedhin të dhëna nga databaza. Në sigurinë e rrjetave nuk ekziston termi i mbrojtjes 100% ndaj këtyre sulmeve, prandaj njohuritë rreth mjeshtërive mbrojtëse ndaj sulmeve në kodin e bazës së të dhënave është shumë me rëndësi.[1]

Mjeshtëritë mbrojtëse ndaj injektimit SQL[Redakto | Redakto nëpërmjet kodit]

  1. Validimi i të dhënave hyrëse
    1. Validimi whitelist
    2. Validimi blacklist
  2. Validimi i të dhënave dalëse
  3. Filtrat
  4. Firewall

Validimi i të dhënave hyrëse[Redakto | Redakto nëpërmjet kodit]

Validimi i të dhënave hyrëse është proces i testimit të të dhënve hyrëse nga aplikacioni me standardin e përcaktuar në aplikacion. Kjo gjë mund të bëhet shumë lehtë, thjeshtë duke përdorur Regular Expressions ose duke u bazuar në logjiken dhe përmbajtjen e aplikacionit në fjalë. Validimi i të dhënave hyrëse bëhet në dy forma, përmes validimit whitelist(ndonjëherë duke referuar përfshirjen ose vlefshmërinë pozitive) dhe validimi blacklist(ndonjëherë i njohur si përjashtim ose vlefshmërinë negative).[2]

Validimi whitelist[Redakto | Redakto nëpërmjet kodit]

Validimi whitelist është një praktikë e pranimit të të dhënave hyrëse nëse ato mendohet se janë të sigurta. Validimi whitelist arrihet duke ndjekur hapat në vazhdim:

  • Data type: A është tipi i të dhënave korrekt? Nëse vlera duhet të jetë numër, a është numër? Nëse duhet të jetë numër pozitiv, kontrollo nëse është nuëer negativ?
  • Data size: Nëse e dhëna është varg, a e ka gjatësinë e duhur? A është gjatësia më pak se maksimumi i lejuar? Nëse është numër, a është madhësia apo vlera korrekte?
  • Shtrirja e të dhënave: Nëse e dhëna është numër, a është shtrirja e atij numri ajo që parashihet për këtë lloj të të dhënave.
  • Përmbajtja e të dhënave: A duket përmbajtja e këtyre të dhënave ashtu siç parashihet? A janë perdorur vetëm karakteret të cilat parashihen për këtë tip të dhënash? Nëse dorëzohet një emër atëherë duhet të jetë e pranueshme prania e disa shenjave te pikësimit.

Validimi blacklist[Redakto | Redakto nëpërmjet kodit]

Validimi blacklist është një praktikë e refuzimit të të dhënave hyrëse nëse ato nuk janë të sigurta. Zakonisht kjo mënyrë e validimit përfshinë refuzimin e disa vrgjeve apo modeleve specifike të cilat njihen si ndërhyrje "të kqija". Kjo qasje është parimishtë më e dobët se validimi whitelist pasi lista e karaktereve dhe vargjeve të dëmshme është shumë e gjatë për verifikim, e ngadalëshme, e vështirë dhe jo e plotë. Një metodë e zakonshme e zbatimit të një listë të zezë është përdorimi i shprehjeve të rregullta, me një list të karaktereve ose vargjeve të cilat nuk lejohet të përdoren, siç është shembulli i mëposhtëm:

'|% | - |, | / \ * | \ \ \ * | _ | \ [| @ | xp_

Validimi i të dhënave dalëse[Redakto | Redakto nëpërmjet kodit]

Në mënyrë që të validohen të dhëneat dalëse shpesh është e nevojshme të kodohet pjesa që kalon në mes të dy moduleve të ndryshme të aplikacionit. Në kontekstin e SQL Injecion, kjo aplikohet si shifrim ose "quote" dhe përmbajtja dërgohet në databazë për t'u siguruar se kjo është trajtuar në mënyrë të përshtatshme. Edhe nëse validimi i të dhënave hyrëse është bërë me kujdes jo gjithëmonë ky validim parandalon hyrjet e paautorizuara, pasi gjithëmonë mund të ketë të meta në sistem. Mënyra më e mirë e parandalimit të probleme të tilla është pordorimi i paramentrave të deklaruar.[2]

Filtërat[Redakto | Redakto nëpërmjet kodit]

Filëtrat janë seri të pavarura të moduleve të cilat performojnë zinxhir para dhe pas procesimit të kërkesave të caktuara(Ueb faqe, URL, etj.). Filtërat kontrollojnë çdo të dhënë hyrëse dhe dalëse. Filtërat nuk kanë ndikim të drejtpërdrejtë në njëri-tjetrin çka na mundëson shtimin e filtrave të tjerë pa ndikuar në ata ekzistues dhe janë shumë të mirë në funksionet e sigurisë si validimi, kërkesat/përgjigjet dhe transformimin e informacioneve dalëse. Filtrat perfaqesojnë një sistem mjatë të sigurtë dhe shumë të deshirueshëm për parandalimin e sulmeve të tilla. Para se të përdorni një filtër për të mbrojtur kërkesën tuaj në ueb nga SQL injeksion, është e rëndësishme që ju të kuptoni se si punon filtëri dhe llojin e mbrojtjes që ofron. Edhe pse filtërat janë dokumente të rëndësishme të sigurisë runtime, ata mund të fusin një ndjenjë të rreme të sigurisë në qoftë se ju nuk e kuptoni plotësisht sjelljen e tyre dhe modelin e sigurisë që filtërat ofrojnë.[2] Në figurë është paraqitur mënyra se si punojnë filtërat:

Puna e filterit

Firewall[Redakto | Redakto nëpërmjet kodit]

Firewall në thelb është një server i cili me funksion gjendet në mes të kërkesës dhe bazës së të dhënave. Aplikacioni lidhet me firewall data bazën dhe ia dërgon query-in si të ishte një lidhje normale me bazën e të dhënave. Firewall data baza e analizon query-in dhe e kalon në bazën e të dhënave për ekzekutim nëse ai(query) konsiderohet i sigurtë. Përndryshe, firewall nuk e dërgon kërkesën në bazën e të dhënave nëse ajo nuk është e sigurtë.[2]

Referime[Redakto | Redakto nëpërmjet kodit]

  1. ^ "Kopje e arkivuar". Arkivuar nga origjinali më 13 korrik 2014. Marrë më 9 qershor 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Archived copy si titull (lidhja)
  2. ^ a b c d "Kopje e arkivuar" (PDF). Arkivuar nga origjinali (PDF) më 5 mars 2016. Marrë më 9 qershor 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Archived copy si titull (lidhja)