Sanitizace dat v HttpRequestu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
michal.lohnisky
Člen | 64
+
+1
-

Ahoj,

používám Nette ~2.2. Zákazník nám ve formuláři občas odešle znak \x08 (backspace). V \Nette\Http\RequestFactory se GET, POST a COOKIE sanitizuje tak, že jakmile field obsahuje alespoň jeden netisknutelný znak, je celý field nahrazen za prázdný řetězec. Přitom dříve se odstraňoval pouze ten vadný netisknutelný znak. Já bych chtěl zákazníkovi pouze odstranit tento jeden vadný (několik vadných) znaků a zbytek zachovat. Jediné, co mě napadá, je to filtrovat ještě v bootstrapu.

Proč se změnilo toto chování? Jaký to má dopad na bezpečnost? A jak bych měl moji situaci řešit?

Díky.

David Grudl
Nette Core | 8282
+
0
-

Jak se taková věc vůbec děje, že někdo napíše \x08?

michal.lohnisky
Člen | 64
+
0
-

Prostě se to stává. Kopírují to různě z Wordu, webů a jiných zdrojů. Nebo jim po klávesnici proběhne kočka.

David Grudl
Nette Core | 8282
+
+5
-

Že zrovna \x08? Vážně nevím, jak bych to na klávesnici napsal. Asi nemám správnou kočku ;)

michal.lohnisky
Člen | 64
+
0
-

Nefunguje to nějak na Windows s levým altem + číslice? (Třeba alt + 6 a 4 byl myslím zavináč). Ve virtuálce s Windows jsem napsal \x7F pomocí Ctrl+Backspace, což je také netisknutelný znak. Každopádně se to uživatelům kvůli kopírování daří docela často. Takže co s tím uděláme?

David Grudl
Nette Core | 8282
+
0
-

No asi to revertnu, co jiného.

Jan Tvrdík
Nette guru | 2595
+
+5
-

@DavidGrudl Co takhle rozlišovat mezi UTF-8 validitou a přítomností control characters? Tedy control characters odmazat a nevalidní UTF-8 řetězce zahodit celé?

David Grudl
Nette Core | 8282
+
0
-

Pro jednoduchost bych CC zakázal i v klíčích a FILES.