Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Nette Framework: Neprůstřelné formuláře II

int
int (neregistrovaný) 79.98.72.---
9. 6. 2009 0:59 Nový

Form::MIME_TYPE

celé vlákno

Zajimalo by me, jak spolehlive je rozeznavani MIME-TYPE v Nette. Dokaze odhalit i pokud si nekdo pohraje s hlavickou odpovedi a mime type prepise na falesnou hodnotu? Aneb kontroluje se jen hodnota, ktera prijde v odpovedi, nebo jsou pouzity nejake slozitejsi postupy?

David Grudl aura:76
9. 6. 2009 8:33 Nový

Re: Form::MIME_TYPE

celé vlákno

To je dobrá otázka, nikdy by se nemělo věřit datům odesílaným uživatelem.

V PHP 5.3 se typ zjišťuje analýzou obsahu souboru, informace zaslaná browserem se rovnou zahazuje. V PHP 5.2 není ještě tahle funkce nativní, takže se zkouší další dvě metody a teprve když není nic k dispozici, vrátí se hodnota zaslaná prohlížečem.

Ve frameworku je nástroj Requirements-Checker, který ověřuje konfiguraci serveru a oznámí, jestli je přítomna nějaká chytřejší funkce pro detekci MIME-type, nebo se na hodnotu nelze spoléhat.

cckar
cckar (neregistrovaný) 195.39.121.---
9. 6. 2009 9:27 Nový

kratsi a kratsi

celé vlákno

Uz ten serial natahujes a delas kapitoly kratsi, kvuli financim za autorstvi nebo jsem jen ja nedockavejsi? :-)

Martin Hassman aura:30
9. 6. 2009 9:40 Nový

Re: kratsi a kratsi

celé vlákno

Redakční poznámka: Davidovy články jsou po dohodě s autorem od začátku celého seriálu nehonorované.

Mat
Mat (neregistrovaný) ---.46.broadband15.iol.cz
9. 6. 2009 16:19 Nový

Validacni pravidla

celé vlákno
Nebylo by „hezčí“ (minimálně z pohledu intellisync :-) místo řetězce určujícího validátor
 …->addRule(‚myVa­lidator‘, ‚Číslo musí být dělitelné %d.‘, 8); 

používat něco jako (řešení používané např v extGWT [Java]):

 email = new TextField();
email.setVali­dator(new EmailValidator());
A třída validátoru např.
 public class EmailValidator implements Validator {
public String validate(Field f, String value) {
if (nejaka_podminka) {
return null;
} else {
return „chybova hlaska“;
}
}
}

Poznámka: co mám použít v komentářích, aby html tag „pre“ fungoval tak, jak by měl (zachovával formátování – mezery, řádkování…)?

melkor
melkor (neregistrovaný) ---.net.upc.cz
9. 6. 2009 20:54 Nový

Ach jo

celé vlákno

„Příště se podíváme na možnosti vykreslování formulářů.“

GRRRR!!!!!!

Mastodont
Mastodont (neregistrovaný) 85.132.159.---
9. 6. 2009 21:28 Nový

Dotázek

celé vlákno

Tentokrát je to spíš jen popis části API, takže není co hodnotit (jedině že bych opět jako minule zkritizoval konfiguraci zadrátovanou do kódu, ve srovnání třeba se Symfony a tamními jednoduchými YAML konfiguráky) …

Ale jeden dotaz bych měl – když jsem se podíval do kódu Nette, tak to vypadá, jako že validace je pevně vázána na formuláře – to se opravdu uvažuje se vstupem dat jen přes formulářová pole?? Jiné frameworky mívají validační moduly samostatně …

Onanym
Onanym (neregistrovaný) ---.zla.cz
10. 6. 2009 0:45 Nový

Re: Dotázek

celé vlákno

U YAMLu je velká režie na zpracování, potažmo nutné cachování. Ostatně dnes už v Symfony ani yaml validátory nejsou.

Mastodont
Mastodont (neregistrovaný) ---.newsfeed.sdlintl.com
10. 6. 2009 9:09 Nový

Re: Dotázek

celé vlákno

… dnes už v Symfony ani yaml validátory nejsou … „Dnes“ je snad ještě pořád 1.2 a tam jsou (?)

Jinak to byl příklad, někdo má raději XML nebo INI.

Tomáš Kafka aura:63
10. 6. 2009 14:02 Nový

Re: Dotázek

celé vlákno

A někdo má raději konfiguraci ve formátu PHP – nemusí kvůli ní měnit IDE ani jazyk, a hlavně, má podporu debuggeru – můžu si na vytvoření validační podmínky dát breakpoint, kouknout se na příslušnou datovou strukturu, a krokovat přidávání prvků do formuláře, to u XML/INI/whatever dost dobře nejde.

Jsem rád, že Nette podporuje konfiguraci formulářů v jazyce PHP (Davide, nový bullet-point do feature listu :))

Onanym
Onanym (neregistrovaný) ---.zla.cz
10. 6. 2009 15:29 Nový

Re: Dotázek

celé vlákno

Milý Tomáši Kafko, vaše osobní preference nechme stranou, ale jednak asi používáte špatné IDE, když nezvládá elementární formáty a jednak, budete se divit, debugovat jdou stejně dobře.

Že Nette umí formuláře v PHP je nečekaný zázrak přímo epických rozměrů (Davide, bullet rozhodně!)

Onanym
Onanym (neregistrovaný) ---.zla.cz
10. 6. 2009 15:06 Nový

Re: Dotázek

celé vlákno

Pravda, asi jsou, kvůli zpětné kompatibilitě, nicméně s 1.1 přišly symfony forms které yaml nepoužívají – jsou takřka okopírované od Zendu s tím, že je Symfony umí automaticky generovat(kam se hrabe Nette :P). Ale jinak to správný příklad celkem je, na yamlu/xml stojí celý základ a od 2.0 by se měl přidat ještě takto konfigurovatelné dependency injection.

Nicméně u komplexnosti Symfony to dává smysl, u Nette to asi nebude dvakrát žádoucí…

Jiří Knesl
Jiří Knesl (neregistrovaný) ---.karneval.cz
15. 6. 2009 20:28 Nový

Re: Dotázek

celé vlákno

Nesouhlasím s tím, že Symfony forms jsou odvozené ze Zend_Form. Nette má k Zend_Formu mnohem blíž. Symfony forms mi přijdou vzdálenější.

klikač
klikač (neregistrovaný) ---.dataapex.cz
11. 6. 2009 22:19 Nový

ochrana před CSRF?

celé vlákno

$form->addProtection(‚Vy­pršel ochranný časový limit, odešlete prosím formulář ještě jednou‘); Tohle že ochrání před Cross-Site Request Forgery (CSRF) nebo XSS?

Tohle nanejvýše ochrání před (CSRF) nebo XSS pokud útok proběhne po timeoutu, ale ne obecně. Pokud bude timout dlouhý, bude dlouho otevřena možnost k útoku. Pok bude krátký, bude uživatele prudit odesílat formulář znova (a nejspíše ho serverem znova vygenerovat a vypnit).

David Grudl
David Grudl (neregistrovaný) ---.fit.vutbr.cz
12. 6. 2009 15:44 Nový

Re: ochrana před CSRF?

celé vlákno

addProtection() nechrání přes XSS, to dělají formuláře automaticky. Tohle se používá jako ochrana proti CSRF.

Délka timeoutu není rozhodující, chrání to spolehlivě nezávisle na timeoutu. Nebo jste našel v kódu nějakou chybu?

MareceK
MareceK (neregistrovaný) ---.sivinet.vp.cust.gts.sk
30. 12. 2009 12:08 Nový

Existuje validacia datumu?

celé vlákno

Existuje v Nette validacia datumu? Kontrola ci je datum v urcitom rozsahu?

Zasílat nově přidané příspěvky e-mailem