[python] hash, mysql
azurIt
azurit na pobox.sk
Pátek Březen 20 01:20:43 CET 2009
Ja samozrejme nehovorim o klasickom formatovani ale o sposobe, akym to robi MySQLdb (pretoze o nom sa bavime) - a tam teda naozaj nevidim dovod, preco by sa nemohlo pouzit '%s'.
Ak sa nenahnevas slush, tak ta malo poupravim nech tu nelieta chybny kod v konfere. Parametre musia ist ako tuple, cize:
"SELECT * FROM blabla WHERE promenna=%s", (promenna,) # ano, ta ciarka v zatvorke je tam ok, musi tam v tomto pripade byt
-----Pôvodná správa-----
Od: slush [slush na slush.cz]
Komu: Konference PyCZ
Predmet: Re: [python] hash, mysql
Tady vidim vzajemne nepochopeni. Jak je videt, bezpecnostni diry v aplikacich casto zavisi i na jedinem znaku :-). Porovnejte nasledujici:
"SELECT * FROM blabla WHERE promenna='%s'" % promenna
"SELECT * FROM blabla WHERE promenna=%s", promenna
Uz je videt ten rozdil? Prvni radek je klasicke python prirazeni - zadne pridavani uvozovek, zadna ochrana proti SQL injection apod. Druhy priklad, jako jednotlive parametry predavane do funkce knihovny MySQLdb, jiz toto vse resi. Jediny rozdil je v carce versus procentu.
Marek
2009/3/20 Dan Pressl <nu.frix na gmail.com>
Prekvapuje me to, ze %s v kombinaci s % provadi, pokud dobre vim,
jenom nahrazeni %s nejakym retezcem. Z sqlite3 sem zvykly pouzivat ?
misto %s prave kvuli odstraneni moznosti SQL Injection, aby prave
nedoslo k nahrazeni retezcem, ktery by nemusel byt zrovna koser:)
Další informace o konferenci Python