Autor | Zpráva | ||
---|---|---|---|
krakatice Profil * |
#1 · Zasláno: 24. 8. 2013, 22:24:31
Ahoj. Chtěl bych se zeptat kdy už je nutné ošetřovat posty. Je nutné to dělat i u postu, který nejde do databáze? Třeba, když zachytim post hesla při registraci... porovnám ho s kontrolou hesla a zahašuju... je vůbec nutné ho třeba ošetřovat pomocí htmlspecialchars a podobně? Děkuji
|
||
jenikkozak Profil |
#2 · Zasláno: 24. 8. 2013, 23:11:37
krakatice:
„je vůbec nutné ho třeba ošetřovat pomocí htmlspecialchars“ Ne. Funkce htmlspecialchars se používá u textů, které se vypisují do HTML stránky. Viz Escapování - definitivní příručka |
||
krakatice Profil * |
#3 · Zasláno: 25. 8. 2013, 02:28:33
Já jsem tuhle příručku četl, ale všude vám napíšou něco jinýho.
|
||
Alphard Profil |
#4 · Zasláno: 25. 8. 2013, 03:57:54
krakatice [#3]:
Uvedená příručka je zcela důvěryhodná. Můžete se ptát na konkrétní věci, které jsou s ní, podle jiných zdrojů, v rozporu. Pro pochopení, kdy je třeba escapovat, je nutné pochopit význam samotného escapování. I vstup, který nejde do db, ale je např. přímo vypsán, je třeba escapovat podle kontextu, kam se vypisuje. Pokud se 2 vstupy hesel porovnávají, vypočítává se (v php) jejich hash a ten se ukládá do db, není třeba je escapovat. Ale pokud by se použila hashovací funkce na úrovni databáze, již se escapovat musí, protože se vstup předává do jiného kontextu. (Ačkoliv většinu hashů není třeba escapovat, vstupy do db se zpravidla preventivně ošetřují vždy.) |
||
krakatice Profil * |
#5 · Zasláno: 26. 8. 2013, 03:02:23
Alphard: nicméně třeba ošetřovat post kterej v php proměnim do tvaru sha512 před vstupem do databáze je naprosto zbytečné ne? Pokud ne tak proč?
|
||
Alphard Profil |
Není to nutné, to jsem psal už výše.
|
||
Jan Tvrdík Profil |
#7 · Zasláno: 26. 8. 2013, 10:35:40
krakatice:
Ale není to ani zbytečné. Úmyslně neošetřovat vybrané vstupy na základě znalosti jejich struktury přináší do kódu zbytečnou komplexitu navíc, které snižuje bezpečnost. Ošetřovat plošně všechny vstupy do databáze je jednodušší a spolehlivější řešení. |
||
krakatice Profil * |
#8 · Zasláno: 26. 8. 2013, 14:20:26
A jakym způsobem by se tedy dalo nějakym postem zaútočit jen na php, když to není zbytečné? Bavím se o tom, že ten post se nevypisuje nikam ven, takže nejdou použít html tagy. Je post nebezpečný i pro php?
Jan Tvrdík : plošně vim jenom o použití Magic quotes, ale to jsem četl, že není už doporočované a v novějších php už se to ani nepodporuje. To jsem taky nepochopil proč. Však to fungovalo ne? Člověk jenom musel počítat s tím, že všechno v databázi je uloženo v tomto tvaru. Neznáte tedy něco vhodného pro plošné použití? |
||
Jan Tvrdík Profil |
krakatice:
Pozor, říkal jsem plošně ošetřit všechny vstupy do databáze. To je něco dost jiného, než plošně ošetřit všechny vstupy tak, jako kdyby měly jít do databáze (což v zásadě dělalo magic quotes). To je naopak zcela špatně. Plošně ošetřit všechny vstupy, které jdou do databáze, umí pravděpodobně všechny rozumné knihovny pro práci s databázi (např. dibi nebo Doctrine). Alternativně lze (alespoň ve většině případů) použít vázaní proměnných, které podporuje MySQLi a PDO. |
||
krakatice Profil * |
#10 · Zasláno: 26. 8. 2013, 16:20:35
Jan Tvrdík: aha no. to máte vlastně pravdu že magic quotes ošetří uplně všechny vstupy tak, jako kdyby měly jít do databáze. A proč je to zcela špatně?
|
||
Alphard Profil |
#11 · Zasláno: 26. 8. 2013, 17:51:20
krakatice:
Píšete, že jste četl Escapování - definitivní příručku, ale zdá se, že ji vůbec nechápete. V první řadě je třeba chápat význam pojmu kontext – je to jazyk, ve kterém bude daný vstup interpretován. Je to zcela zásadní, při konkrétní implementaci nelze mluvit o obecném escapování, to neexistuje. Vždy se escapuje pro nějaký kontext, tj. escapujeme pro kontext html, js, sql; pro každý kontext jinak. Z toho plyne odpověď na otázku v [#10]. Escapování pro špatný kontext není escapování, ale rozbití vstupu (protože se ošetřuje špatná množina znaků). A víc to vysvětlit nedokáži, doporučuji přečíst znovu Escapování - definitivní příručku, Escapování – Wikipedie a cokoliv dalšího, z čeho to pochopíte. |
||
krakatice Profil * |
#12 · Zasláno: 26. 8. 2013, 19:15:44
Alphard: možná jste tu příručku měl psát vy. Od vás to chápu hned. Děkuji za vysvětlení.
|
||
Časová prodleva: 11 let
|
0