Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
BF extended 2022
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:19.8.2012 16:41

Učím se escapování, a chtěl bych se zeptat, proč mám vlatně při vypisování proměnných do mysql_query proměnnou nejdřív prohnat mysql_real_es­cape_string()?, co by se stalo, kdybych ji neprohnal?

 
Odpovědět
19.8.2012 16:41
Avatar
Odpovídá na martinkobelka
Neaktivní uživatel:19.8.2012 16:46

sdraco mi to krásně vysvětlil.
To by ti někdo do inputu mohl napsat :
''DELETE * FROM tabulka
A bylo by po srandě :)

Nahoru Odpovědět
19.8.2012 16:46
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinkobelka
Kit:19.8.2012 16:51

Uživatel by do vstupního stringu mohl vložit apostrof. Tím by ukončil řetězec a další znaky by mohl zneužít pro změnu SQL dotazu. Říká se tomu SQL injection. Takto upravený dotaz by pak mohl třeba vypsat obsah databáze nebo ji zničit.

Modernější ovladače, např. PDO, umožňují používat tzv. parametrizované dotazy. V nich se již escapování, tedy funkce mysql_real_es­cape_string(), nepoužívá.

Nahoru Odpovědět
19.8.2012 16:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Don
Člen
Avatar
Odpovídá na Kit
Don:19.8.2012 20:41

Sice to moc nesouvisí s článek ale i přes to se zeptám. Ovladač mysqli má již ošetřeno escapování? Funkce mysqli_real_es­cape_string pro to je. V manuálu jsem o tom moc nenašel jaké rozdíly mezi ovladači mysqli a mysql jsou. Proto se ptám tu.

 
Nahoru Odpovědět
19.8.2012 20:41
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět
19.8.2012 20:46
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
Don
Člen
Avatar
Odpovídá na David Čápka
Don:19.8.2012 20:48

Tenhle seriál mám pročtený. Hlavní rozdíl vidím v objektovém přístupu.

 
Nahoru Odpovědět
19.8.2012 20:48
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Don
Kit:19.8.2012 21:15

V MySQLi jsou použitelné obě techniky. Klasicky s escapováním nebo parametrizovaně bez escapování.

Nahoru Odpovědět
19.8.2012 21:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.