Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

MySQL Injection Tutorial

MySQL Injection je akt vloženie vyhlásenie MySQL do databázy bez vedomia vlastníka databázy . To je všeobecne dosiahnuté využitím užívateľských vstupných polí , ktoré nie sú riadne chránené . Miesto poskytuje skutočnú vstup , ktorý vlastník databázy požiadal o , užívateľ vstrekuje vyhlásenie , MySQL , ktorá mení správanie dotazu , čím sa získa injekčnej užívateľ , schopnosť manipulovať databáze . MySQL injekcie

Najjednoduchší spôsob , ako pochopiť a naučiť sa to , čo MySQL injekcie naozaj doesis sa pozrieť na príklad . Jedným z obľúbených spôsobov využitia MySQLinjections je obísť prihlasovacie kontroly na internetových stránkach . Tu je príklad awebsite , ktorý je pomocou nasledujúceho formulára na overenie užívateľa :

Login : < vstupu type = " text " name = " meno " > lozinku : input type = " text " name = " password " > input type = " submit " > < /form >

po stlačení tlačidla odoslať údaje privedená je potom poslaný na stránku userlogin.php , ktorý prijíma a prechádza dotazu na databázu , ktorú chcete skontrolovať úroveň užívateľského prístupu je , a keď vstúpil do správne užívateľské meno a heslo .

< ? $ username = $ _POST [ ' username ' ] ; $ heslo = $ _POST [ ' heslo ' ] ; $ query = " SELECT používateľské meno , heslo od užívateľov WHERE username = ' $ username ' a password = ' $ heslo ' " ? >

Tento druh prihlasovacieho formulára je dokorán pre využitie MySQL injection útoky . Ak chcete získať prístup k webovej stránke môže každý užívateľ vložiť nasledujúci kód : ' OR 1 = 1 - pre užívateľské meno a ' OR 1 = 1 pre zadanie hesla

dotaz bude teraz vyzerať takto : $ query = " SELECT meno . , heslo od užívateľov WHERE username = '' OR 1 = 1 - ' a password = '' OR 1 = 1 " ;

Tento dotaz vyberie užívateľské meno a heslo od užívateľov , kde neexistujú používateľské mená a heslá ( '' časť ) alebo ak jedna sa rovná jednej . Ako jedna rovná sa jeden vo všetkých prípadoch zabezpečenia databázy je ohrozená . Dve pomlčky pred apostrof boli pridané , aby MySQL ignorovať apostrof , ktorý je teraz nadbytočný . To je len jeden typ útoku s použitím MySQL injekcie . Ďalšie variácie na tomto útoku je getaccess pre viac informácií , než je používateľ dovolené .

Teraz sa pozrite na príklad , kde je vlastník databázy pomocou nasledujúceho queryto získať dáta pre zobrazenie na užívateľskom účte info stránku .
< P > $ query = " SELECT * FROM užívateľov WHERE username = ' $ name ' " ;

Ak tento druh dotazu nie je chránený užívateľovi so zlými úmyslami môže input'OR 1 = 1 - k bypassu užívateľským menom kontrole . $ query = " SELECT * FROM užívateľov WHERE username = '' OR 1 = 1 - ' " ; Tento dotaz bude teraz nedá vybrať len údaje užívateľa , ale dáta všetkých užívateľov v tabuľke " užívateľov "
< br . >
Ochrana proti MySQL injekcie

Existuje mnoho spôsobov , ako sa chrániť proti MySQL injekcie . V skutočnosti MySQL injekcie sú hrozby iba v prípade , že developer má ignorovali nebezpečenstvo a zlyhali pri ochrane jeho kód . Najjednoduchší spôsob , ako sa chrániť pred injekciou v PHP a MySQL kombinácia je použiť PHP funkciu : .. ? " Mysql_real_escape_string "

Vráťme sa späť k prvému príkladu < $ username = $ _POST [ ' username ' ] ; $ password = $ _POST [ ' heslo ' ] ; $ query = " SELECT používateľské meno , heslo od užívateľov , kde username = ' $ username ' a password = ' $ heslo ' " ; ? >

Pre ochranu proti MySQL injekcie priame použitie užívateľských vstupov musí befiltered cez " mysql_real_escape_string " . . ? Funkcia " mysql_real_escape_string " unikne všetkým MySQL špeciálne znaky , ktorými sa odstráni možnosť zmeniť správanie našej dotazu

< $ username = mysql_real_escape_string ( $ _POST [ ' username ' ] ) ; $ heslo = mysql_real_escape_string ( $ _POST [ ,"' heslo ' ] ) ; $ query = " SELECT používateľské meno , heslo od užívateľov WHERE username = ' $ username ' a password = ' $ heslo ' " ; ? >

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené