Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 12385|Odpověď: 0

[Komunikace] Bezpečnostní bezpečnostní zranitelnost MSSQL Statement 2011 Password Validation Tutorial

[Kopírovat odkaz]
Zveřejněno 26.11.2014 15:47:51 | | |
Jako mezinárodní standardní dotaz do databáze byly SQL příkazy široce používány v různých programovacích prostředích. Jako vyspělý a stabilní systém jsou přihlašování uživatelů a ověřování hesla nezbytné. Při své každodenní programátorské práci jsem zjistil, že mnoho programátorů používá SQL příkazy k ověření uživatelských hesel pomocí takového příkazu:
sql="Vyberte * z uživatelské tabulky, kde jméno='"+jméno+"' a heslo='"+heslo+"'"
Jméno a heslo jsou uživatelská jména a hesla zadaná uživatelem a výše uvedené příkazy se provádějí k ověření, zda jsou uživatel a heslo legitimní a platné. Analýzou však lze zjistit, že v uvedených tvrzeních existují fatální mezery. Když zadáme následující řetězec do uživatelského jména: 111'or'1=1 a pak neformálně zadáme heslo, nastavíme ho na aaaa. Po nahrazení proměnné se SQL příkaz stává následujícím řetězcem:
sql="Vyberte * z uživatelské tabulky, kde jméno='111'or'1=1' a heslo='aaaa'
Všichni víme, že když příkaz select hodnotí podmínky dotazu, ignoruje následující operace a (and) při setkání s operacemi or (or), a hodnota 1=1 v uvedeném příkazu je vždy pravdivá, což znamená, že bez ohledu na to, jakou hodnotu je v hesle zadané, může ověření hesla projít výše! Řešení tohoto problému je velmi jednoduché a existuje mnoho metod, nejčastěji používanou je posouzení legitimity uživatele a hesla zadaného uživatelem před provedením ověření, přičemž speciální znaky, jako jsou jednoduché uvozovky a rovnice, nejsou povoleny.
Výše uvedené problémy, i když se mohou zdát jednoduché, skutečně existují. Například raná verze slavné online hry "Smiling Proud Jianghu" na internetu měla takový problém a autor také pečlivě analyzoval některé programy, které napsal dříve, po přečtení zprávy o zranitelnosti této hry, a bylo tam mnoho takových mezer. Tohle by opravdu mělo být naše pozornost. To také odhaluje nedostatek programátorských zkušeností a povědomí o bezpečnosti mladých programátorů, včetně autora. Zároveň nám to připomíná, že programátoři by měli při jeho navrhování plně zvážit bezpečnost programu a neměli by být nedbalí, protože i zdánlivě malá opomenutí může mít vážné důsledky.




Předchozí:SQL 2005 databázová bezpečnost a referenční integrita
Další:2011 MSSQL System Security SA – tutoriál o riziku bezpečnosti slabých hesel
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com