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

Útek dotaz na MySQL v jazyku Python

Python , programovací jazyk vybavený dynamickými sémantiky , je obľúbený medzi programátormi a kódery , ale tak príliš je MySQL . Integrácia MySQL s Python často nie je až tak veľký problém pre skúsených programátorov , ale kódovanie môže dostať trochu komplikovaný , pretože C API _mysql mapovanie funkcie . Unikajúci je jeden z týchto problémov . MySQLdb

databázy API Python , MySQLdb je často zbraň voľby . Kódery môžu vyhnúť priamemu zápisu do modulu pomocou rozhrania MySQL . To umožňuje vykonávanie MySQL C API , ale to nemusí byť vždy jednoduchá úloha . MySQL C API má svoje vlastné objektovo orientované procesy . Pri práci s únikových funkcií, " mysql_escape_string ( ) " prekladá v MySQL ako " _mysql.escape_string ( ) . " Problém s touto stratégiou je , že bez riadnej úniku pre MySQL v Pythone , tam môže byť problémy spojené s komplikovanými reťazcov , pretože nemusia uniknúť správne .
vkladanie premenných

Ďalší problém nastane , keď kódery vloženie premenné do MySQL tabuľky . V nasledujúcom úryvku , kodér vloží štyri premenné v tabuľke .

Cursor.execute ( " " , " INSERT INTO skrine ( topánky , ponožky , legwarmer , horné ) hodnoty ( Nike , Puma , vlna , adidas ) " " " )

Tento úryvok nemusí fungovať, ak kodér pridáva riadnu escape znak , ako je " % s " . Dvojité úvodzovky používané sú tiež uniknúť znaky , ale pri úniku premenných , kodér musí použiť " % s " .
Znak percenta

modifikátory používané v SQL , ktoré sú zodpovedné za záväzné parametre , môže byť trochu mätúce . Syntax " printf " štýl je bežne používané v MySQL klientskej knižnice . Revidovaná úryvok by potom mal vyzerať takto :

cursor.execute ( " " , " INSERT INTO skrine ( topánky , ponožky , legwarmer , horný ) VALUES ( % ( Nike ) s , % ( puma ) s , % ( vlna ) s , % ( adidas ) , s ) " " " )

Avšak , pridanie escape znaky nestačí na zmiernenie problému . Stačí pridať tieto znaky sám teraz je kód náchylné k otázkam formátovacích reťazcov a otvorené škodlivým útokom .
Úvahy

kodér môže byť schopný kód trezor , pracovný kód pridaním ďalších úprav kódu . Tu je konečný pracovný úryvok :

cursor.execute ( " " , " INSERT INTO Songs skrine ( topánky , ponožky , legwarmer , horný ) VALUES ( % s , % s , % s , % s ) " , " " , ( nike , puma , vlna , adidas ) )

Ďalší problém môže nastať s percentuálne symbolom . Ak kodér použije percentuálna znamení v skripte , ( konkrétne v reťazci dotazu , " nedarí execute ( ) " ) , by malo byť riadne unikol - musia byť použité dva percentuálne znamenie . Jeden z percentuálnych znamení bude slúžiť ako identifikátor pre útek .

Najnovšie články

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