Sanitizace dat v HttpRequestu
- michal.lohnisky
- Člen | 64
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.
- michal.lohnisky
- Člen | 64
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
Ž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
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?
- Jan Tvrdík
- Nette guru | 2595
@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é?