Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 12385|Atsakyti: 0

[Komunikatas] 2011 m. MSSQL pareiškimo slaptažodžio patvirtinimo saugos pažeidžiamumo pamoka

[Kopijuoti nuorodą]
Paskelbta 2014-11-26 15:47:51 | | |
Kaip tarptautinis standartinis duomenų bazės užklausos teiginys, SQL sakiniai buvo plačiai naudojami įvairiose programavimo aplinkose. Kaip brandžiai ir stabiliai sistemai, vartotojo prisijungimas ir slaptažodžio patvirtinimas yra būtini. Kasdieniame programavimo darbe pastebėjau, kad daugelis programuotojų naudoja SQL teiginius, kad patikrintų vartotojo slaptažodžius tokiu teiginiu:
sql="Pasirinkite * iš vartotojo lentelės, kur name='"+name+"' ir password='"+password+"'"
Vardas ir slaptažodis yra vartotojo įvesti vartotojo vardai ir slaptažodžiai, o aukščiau pateikti teiginiai vykdomi siekiant patikrinti, ar vartotojas ir slaptažodis yra teisėti ir galiojantys. Tačiau analizuojant galima nustatyti, kad aukščiau pateiktuose teiginiuose yra mirtinų spragų. Kai į vartotojo vardą įvedame šią eilutę: 111'arba'1=1, tada atsitiktinai įveskite slaptažodį, nustatome jį į aaaa. Pakeitus kintamąjį, SQL sakinys tampa tokia eilute:
sql="Pasirinkite * iš vartotojo lentelės, kur name='111'arba'1=1' ir password='aaaa'
Visi žinome, kad kai pasirinkimo sakinys vertina užklausos sąlygas, susidūręs su (arba) operacijomis jis ignoruos šias ir (ir) operacijas, o 1=1 reikšmė aukščiau pateiktame teiginyje visada yra teisinga, o tai reiškia, kad nesvarbu, kokia reikšmė įvesta į slaptažodį, jis gali praeiti aukščiau pateiktą slaptažodžio patikrinimą! Šios problemos sprendimas yra labai paprastas, ir yra daugybė metodų, dažniausiai naudojamas įvertinti vartotojo ir slaptažodžio teisėtumą prieš atliekant patikrinimą, o specialūs simboliai, tokie kaip viengubos kabutės ir lygybės ženklai, neleidžiami.
Minėtos problemos, nors ir gali atrodyti paprastos, egzistuoja. Pavyzdžiui, ankstyvoje garsiojo internetinio žaidimo "Smiling Proud Jianghu" versijoje internete buvo tokia problema, o autorius taip pat atidžiai išanalizavo kai kurias programas, kurias parašė anksčiau, perskaitęs šio žaidimo pažeidžiamumo ataskaitą, ir tokių spragų buvo daug. Tai tikrai turėtų būti mūsų dėmesys. Tai taip pat atskleidžia jaunų programuotojų, įskaitant autorių, programavimo patirties ir saugumo supratimo trūkumą. Tuo pačiu metu tai taip pat primena, kad programuotojai, kurdami programą, turėtų visiškai atsižvelgti į programos saugumą ir neturėtų būti aplaidūs, o iš pažiūros nedidelis praleidimas gali sukelti rimtų pasekmių.




Ankstesnis:SQL 2005 duomenų bazės sauga ir nuorodų vientisumas
Kitą:2011 m. MSSQL sistemos saugumo SA silpno slaptažodžio saugos rizikos pamoka
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com