Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 12385|Odgovoriti: 0

[Komunikacija] Varnostne ranljivosti za varnostne ranljivosti MSSQL izjave 2011

[Kopiraj povezavo]
Objavljeno na 26. 11. 2014 15:47:51 | | |
Kot mednarodna standardna poizvedba v podatkovnih bazah so SQL stavki široko uporabljeni v različnih programskih okoljih. Kot zrel in stabilen sistem sta uporabniška prijava in preverjanje gesel ključna. Pri svojem vsakodnevnem programerskem delu sem ugotovil, da mnogi programerji uporabljajo SQL stavke za preverjanje uporabniških gesel s takšnimi izjavami:
sql="Izberi * iz uporabniške tabele, kjer ime='"+ime+"' in geslo='"+password+"'"
Ime in geslo sta uporabniška imena in gesla, ki jih uporabnik vnese, zgornje izjave pa se izvajajo za preverjanje, ali sta uporabnik in geslo legitimna in veljavna oseba. Vendar pa je z analizo mogoče ugotoviti, da so v zgornjih izjavah usodne luknje. Ko v uporabniško ime vnesemo naslednji niz: 111'or'1=1, nato pa geslo vnesemo mimogrede, ga nastavimo na aaaa. Po zamenjavi spremenljivke SQL izjava postane naslednji niz:
sql="Izberite * iz uporabniške tabele, kjer ime='111'or'1=1' in geslo='aaaa'
Vsi vemo, da ko stavek select presodi pogoje poizvedbe, bo ob srečanju z or (ali) operacijami ignoriral naslednje in (and), vrednost 1=1 v zgornji izjavi pa je vedno resnična, kar pomeni, da ne glede na vrednost, ki je vnesena v geslo, lahko prestane zgornjo preverjanje gesla! Rešitev tega problema je zelo preprosta in obstaja veliko metod, najpogosteje uporabljena je presoja legitimnosti uporabnika in vnesenega gesla pred izvedbo preverjanja, posebni znaki, kot so enojni narekovaji in enaki, pa niso dovoljeni.
Zgornje težave, čeprav se morda zdijo preproste, vseeno obstajajo. Na primer, zgodnja različica znamenite spletne igre "Smiling Proud Jianghu" na internetu je imela tak problem, avtor pa je po branju poročila o ranljivosti te igre skrbno analiziral nekatere programe, ki jih je prej napisal, in bilo je veliko takšnih lukenj. To bi res morala biti naša pozornost. To prav tako razkriva pomanjkanje programerskih izkušenj in varnostne ozaveščenosti mladih programerjev, vključno z avtorjem. Hkrati pa nas opominja, da morajo programerji pri načrtovanju programa temeljito upoštevati varnost programa in ne smejo biti malomarni, saj lahko že majhna izpustitev povzroči resne posledice.




Prejšnji:SQL 2005 varnost baz podatkov in referenčna integriteta
Naslednji:2011 MSSQL System Security SA Vadnica za varnost šibkih gesel
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com