Autor | Zpráva | ||
---|---|---|---|
jannie Profil * |
#1 · Zasláno: 25. 4. 2011, 13:27:31
Zdravím.
Proti SQL injection se prý dá bránit funkci mysql_real_escape_string() . Mám jí tedy u přihlašovacího formuláře do administrace. Má smysl tuto funkci používat i na formulář v administrací - přidávání nového článku? |
||
Mastodont Profil |
#2 · Zasláno: 25. 4. 2011, 13:54:01
Tu funkci používej VŠUDE, kde předáváš parametry do SQL příkazu.
|
||
jannie Profil * |
#3 · Zasláno: 25. 4. 2011, 15:03:03
A stačí tedy jen tato funkce? Nebo to ošetřujete ještě nějak jinak?
|
||
panther Profil |
#4 · Zasláno: 25. 4. 2011, 15:15:48
jannie:
pro řetězce tato, pro hesla hashe, pro čísla ověřování int typu, případně přetypování. |
||
jannie Profil * |
#5 · Zasláno: 25. 4. 2011, 15:37:59
hashe, ok
a ty čísla tedy - kdekoliv vstupuje do parametru sql příkazu číslo budu zkoumat, zda is_int(), is_double(), is_float() ? Takto? |
||
Mastodont Profil |
#6 · Zasláno: 25. 4. 2011, 15:43:25
Stačí přetypovat:
"WHERE celočíselný_sloupec = " . (int) $proměnná "WHERE číselný_sloupec = " . (double) $proměnná |
||
jannie Profil * |
#7 · Zasláno: 25. 4. 2011, 15:57:07
To vypadá docela jednoduše, díky.
|
||
pcmanik Profil |
#8 · Zasláno: 25. 4. 2011, 16:21:10
Zrejme si zaciatocnik, ale bolo by dobre si pozriet prepare_statement je to az v rozsireni mysqli, ale ulahcuje to pracu, nemusis sa starat o ziadne escapovanie.
|
||
jannie Profil * |
#9 · Zasláno: 25. 4. 2011, 18:31:57
Díky za tip! Podívám se na to :)
|
||
Časová prodleva: 5 dní
|
|||
ab Profil * |
#10 · Zasláno: 30. 4. 2011, 09:40:27
Jakej prepare_statement? nejaky vic info ? diky
|
||
Alphard Profil |
#11 · Zasláno: 30. 4. 2011, 10:27:56
[#10] ab
Jsou to připravené dotazy, které se pošlou na server. Pak při každém dotazu stačí poslat parametry a zavolat daný předpřipravený dotaz. Lze si to představit jako funkce, ale zdůrazňuji, že uživatelsky definované funkce jsou ještě něco jiného. Tímto se ušetří parsování dat a zvýší se bezpečnost, protože použití parametrů zamezí sql injection. Líbí se mi MySQL Prepared Statements a možná Prepared Statements. Jestli vládnete lépe slovenštinou než angličtinou, třeba MySQL (69) - Prepared Statements. Práce s nimi v PHP je pěkně vidět na Prepared statements and stored procedures, u PDO konkrétně PDO::prepare. Mně ale PDO k srdci nepřirostlo, takže doporučuji podívat se na dibi. Je do databázová vrstva, která výrazně usnadňuje práci. Mj. při přímém sestavování dotazu podporuje parametry a data automaticky ošetřuje. |
||
Časová prodleva: 8 dní
|
|||
ybznek Profil |
#12 · Zasláno: 8. 5. 2011, 15:26:29
Já to řeším tak, že si zavolám fci, která rekurzivně escapuje(+entituje) všechny hodnoty v _GET a _POST
asi to není ideální, ale přišlo mi to jako nejjednodušší řešení bez využití frameworku |
||
Časová prodleva: 13 let
|
0