2008/7/22 Marek Mako <[EMAIL PROTECTED]>: > nasiel som nieco podobne ako si pisal, premyslal som nad tym. Vies mi aj > povedat ake vyhody su v tvojom zapise? alebo je to standard? dakujem > > ---------- Forwarded message ---------- > From: Věroš Kaplan <[EMAIL PROTECTED]> > Date: 2008/7/22 > Subject: Re: [python] pysql_premenna > To: Konference PyCZ <python@py.cz> > > > Chce se mi křičet. Takhle prosím NIKDY NE! > > Správně je takhle: > > --- > p=raw_input("priezvisko: ") > m=raw_input("meno: ") > c=input("cislo: ") > > cur.execute("insert into zoznam (priezvisko, meno, telefon) values (?, > ?, ?)", (p, m, c)) > > > --VK > > 2008/7/20 Petr Dlabal <[EMAIL PROTECTED]>: >> treba nejak jako >> cur.execute("insert into zoznam (priezvisko, meno, telefon) values >> ('%s', '%s', '%s')"%(p,m,c)) >> >> PD >> On Sat, Jul 19, 2008 at 11:25 PM, Marek Mako <[EMAIL PROTECTED]> wrote: >>> Zdravim >>> >>> Pomocou pysqlite vytvaram testovaciu db, hodim utrzok kodu: >>> .... >>> >>> p=raw_input("priezvisko: ") >>> m=raw_input("meno: ") >>> c=input("cislo: ") >>> >>> cur.execute("insert into zoznam (priezvisko, meno, telefon) values (p, m, >>> c)") >>> >>> con.commit() >>> .... >>> >>> prosim vas ako dostamen nacitane hodnoty p, m, c zo vstupu uzivatela do >>> values tabulky zoznam? >>> >>> toto je iba ukazkovy priklad :-) >>> >>> >>> >>> >>> -- >>> Marek Mako >>> >>> Phone: 00421 948 020 529, O2 - SK >>> VoIP: 00421 692 042 968, T-Com >>> >>> MSN: [EMAIL PROTECTED] >>> Jabber: [EMAIL PROTECTED] >>> ICQ: 365 869 152 >>> _______________________________________________ >>> Python mailing list >>> Python@py.cz >>> http://www.py.cz/mailman/listinfo/python >>> >> _______________________________________________ >> Python mailing list >> Python@py.cz >> http://www.py.cz/mailman/listinfo/python >> > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > > > > -- > Marek Mako > > Phone: 00421 948 020 529, O2 - SK > VoIP: 00421 692 042 968, T-Com > > MSN: [EMAIL PROTECTED] > Jabber: [EMAIL PROTECTED] > ICQ: 365 869 152 > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python >
Ošetří se SQL injection. ( http://en.wikipedia.org/wiki/SQL_injection ). --- Uvažujme kód --- p=raw_input("priezvisko: ") m=raw_input("meno: ") c=input("cislo: ") cur.execute("insert into zoznam (priezvisko, meno, telefon) values (%s, %s, %s)" % (p, m, c)) #spatne# cur.execute("insert into zoznam (priezvisko, meno, telefon) values (?, ?, ?)", (p, m, c)) #lepe# --- Pokud do telefon nějaký vtipálek napíše: "222222222,33333333" program na radku #spatne# spadne. Proc? Ještě horší případ: do cislo napíše;"2); delete from zoznam where (1=1"; Co se stane potom? --- První varianta vyrobí řetězec, který pak pošle do databáze, druhá varianta pošle do databáze příkaz a jeho parametry. Je potom starostí DB modulu, aby data oescapoval tak, jak databáze očekává a excesům z příkladů zabránil. Čekám na dobrovolníká, ať to vysvětlí lépe, neb poslední dobou jsou moje vysvětlovací buňky nějaké nemocné. --VK _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python